[gwibber/f14/master] update to 2.31.93, fixes notifications

Tom Callaway spot at fedoraproject.org
Thu Sep 9 20:29:55 UTC 2010


commit 197fb97320dfc5cb1f5cb0a80c9a096f7993009d
Author: Tom "spot" Callaway <tcallawa at redhat.com>
Date:   Thu Sep 9 16:30:01 2010 -0400

    update to 2.31.93, fixes notifications

 gwibber-832bzr-twitter-oauth.patch |  662 ------------------------------------
 gwibber.spec                       |   12 +-
 sources                            |    2 +-
 3 files changed, 6 insertions(+), 670 deletions(-)
---
diff --git a/gwibber-832bzr-twitter-oauth.patch b/gwibber-832bzr-twitter-oauth.patch
index 9d75302..4e87b37 100644
--- a/gwibber-832bzr-twitter-oauth.patch
+++ b/gwibber-832bzr-twitter-oauth.patch
@@ -1,396 +1,3 @@
-diff -up gwibber-832bzr/gwibber/actions.py.oauth gwibber-832bzr/gwibber/actions.py
---- gwibber-832bzr/gwibber/actions.py.oauth	2010-08-31 16:35:46.829133992 -0400
-+++ gwibber-832bzr/gwibber/actions.py	2010-08-31 16:36:06.056134002 -0400
-@@ -1,5 +1,12 @@
- import gtk, gwui, microblog, resources, util, json
- from microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from microblog.util.custom import *
-+except:
-+  pass
-+
- import gwibber.microblog.util
- import mx.DateTime
- import re
-diff -up gwibber-832bzr/gwibber/client.py.oauth gwibber-832bzr/gwibber/client.py
---- gwibber-832bzr/gwibber/client.py.oauth	2010-08-31 16:36:19.253134002 -0400
-+++ gwibber-832bzr/gwibber/client.py	2010-08-31 16:36:41.540134018 -0400
-@@ -12,6 +12,13 @@ gettext.textdomain('gwibber')
- 
- from gwibber.microblog.util import log
- from microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from microblog.util.custom import *
-+except:
-+  pass
-+
- from dbus.mainloop.glib import DBusGMainLoop
- import dbus, dbus.service
- 
-diff -up gwibber-832bzr/gwibber/gwui.py.oauth gwibber-832bzr/gwibber/gwui.py
---- gwibber-832bzr/gwibber/gwui.py.oauth	2010-08-31 16:36:51.402133877 -0400
-+++ gwibber-832bzr/gwibber/gwui.py	2010-08-31 16:37:14.636134002 -0400
-@@ -14,6 +14,12 @@ from mako.template import Template
- from mako.lookup import TemplateLookup
- 
- from microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from microblog.util.custom import *
-+except:
-+  pass
- 
- gtk.gdk.threads_init()
- 
-diff -up gwibber-832bzr/gwibber/lib/gtk/buzz.py.oauth gwibber-832bzr/gwibber/lib/gtk/buzz.py
---- gwibber-832bzr/gwibber/lib/gtk/buzz.py.oauth	2010-08-31 16:23:47.646134002 -0400
-+++ gwibber-832bzr/gwibber/lib/gtk/buzz.py	2010-08-31 16:23:52.683134080 -0400
-@@ -16,7 +16,7 @@ class AccountWidget(gtk.VBox):
-   """
-   
-   def __init__(self, account=None, dialog=None):
--    """Creates the account pane for configuring facebook accounts"""
-+    """Creates the account pane for configuring Buzz accounts"""
-     gtk.VBox.__init__( self, False, 20 )
-     self.ui = gtk.Builder()
-     self.ui.set_translation_domain ("gwibber")
-diff -up gwibber-832bzr/gwibber/lib/gtk/facebook.py.oauth gwibber-832bzr/gwibber/lib/gtk/facebook.py
---- gwibber-832bzr/gwibber/lib/gtk/facebook.py.oauth	2010-08-31 16:37:24.159133944 -0400
-+++ gwibber-832bzr/gwibber/lib/gtk/facebook.py	2010-08-31 16:37:47.612134002 -0400
-@@ -28,6 +28,12 @@ import gwibber.microblog
- from gwibber.microblog import facebook
- from gwibber.microblog.util import facelib
- from gwibber.microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from gwibber.microblog.util.custom import *
-+except:
-+  pass
- import json, urlparse, gnomekeyring, uuid
- from gettext import gettext as _
- 
-diff -up gwibber-832bzr/gwibber/lib/gtk/twitter.py.oauth gwibber-832bzr/gwibber/lib/gtk/twitter.py
---- gwibber-832bzr/gwibber/lib/gtk/twitter.py.oauth	2010-08-31 16:24:03.696133995 -0400
-+++ gwibber-832bzr/gwibber/lib/gtk/twitter.py	2010-08-31 17:02:13.397134077 -0400
-@@ -18,16 +18,26 @@
- # Twitter widgets for Gwibber
- #
- 
--import gtk
-+import gtk, webkit, gnomekeyring
-+import urllib, urllib2, json, urlparse, uuid
-+from oauth import oauth
-+
- from gtk import Builder
- import gwibber.microblog
-+from gwibber.microblog import twitter
-+from gwibber.microblog.util import resources
-+from gettext import gettext as _
-+
-+gtk.gdk.threads_init()
-+
-+sigmeth = oauth.OAuthSignatureMethod_HMAC_SHA1()
- 
- class AccountWidget(gtk.VBox):
-   """AccountWidget: A widget that provides a user interface for configuring twitter accounts in Gwibber
-   """
-   
-   def __init__(self, account=None, dialog=None):
--    """Creates the account pane for configuring twitter accounts"""
-+    """Creates the account pane for configuring Twitter accounts"""
-     gtk.VBox.__init__( self, False, 20 )
-     self.ui = gtk.Builder()
-     self.ui.set_translation_domain ("gwibber")
-@@ -36,5 +46,105 @@ class AccountWidget(gtk.VBox):
-     self.vbox_settings = self.ui.get_object("vbox_settings")
-     self.pack_start(self.vbox_settings, False, False)
-     self.show_all()
--    if dialog:
--      dialog.get_object("vbox_create").show()
-+
-+    self.account = account or {}
-+    self.dialog = dialog
-+    has_secret_key = True
-+    if self.account.has_key("id"):
-+      try:
-+        value = gnomekeyring.find_items_sync(gnomekeyring.ITEM_GENERIC_SECRET, {"id": str("%s/%s" % (self.account["id"], "secret_token"))})[0].secret
-+      except gnomekeyring.NoMatchError:
-+        has_secret_key = False
-+ 
-+    try:
-+      if self.account.has_key("access_token") and self.account.has_key("secret_token") and self.account.has_key("username") and has_secret_key:
-+        self.ui.get_object("hbox_twitter_auth").hide()
-+        self.ui.get_object("fb_auth_done_label").set_label(_("%s has been authorized by Twitter") % self.account["username"])
-+        self.ui.get_object("hbox_twitter_auth_done").show()
-+      else:
-+        self.ui.get_object("hbox_twitter_auth_done").hide()
-+        self.ui.get_object("twitter_auth_button").modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("red"))
-+        if self.dialog:
-+          self.dialog.get_object('vbox_create').hide()
-+    except:
-+      self.ui.get_object("hbox_twitter_auth_done").hide()
-+      if self.dialog:
-+        self.dialog.get_object("vbox_create").hide()
-+ 
-+  def on_twitter_auth_clicked(self, widget, data=None):
-+    self.winsize = self.window.get_size()
-+ 
-+    web = webkit.WebView()
-+    web.load_html_string(_("<p>Please wait...</p>"), "file:///")
-+ 
-+    self.consumer = oauth.OAuthConsumer(*resources.get_twitter_keys())
-+ 
-+    request = oauth.OAuthRequest.from_consumer_and_token(self.consumer, http_method="POST",
-+        callback="http://gwibber.com/0/auth.html",
-+        http_url="https://api.twitter.com/oauth/request_token")
-+ 
-+    request.sign_request(sigmeth, self.consumer, token=None)
-+ 
-+    tokendata = urllib2.urlopen(request.http_url, request.to_postdata()).read()
-+    self.token = oauth.OAuthToken.from_string(tokendata)
-+ 
-+    url = "http://api.twitter.com/oauth/authorize?oauth_token=" + self.token.key
-+ 
-+    web.open(url)
-+    web.set_size_request(550, 400)
-+    web.connect("title-changed", self.on_twitter_auth_title_change)
-+ 
-+    scroll = gtk.ScrolledWindow()
-+    scroll.add(web)
-+ 
-+    self.pack_start(scroll, True, True, 0)
-+    self.show_all()
-+ 
-+    self.ui.get_object("vbox1").hide()
-+    self.ui.get_object("expander1").hide()
-+ 
-+  def on_twitter_auth_title_change(self, web=None, title=None, data=None):
-+    if title.get_title() == "Success":
-+      try:
-+        url = web.get_main_frame().get_uri()
-+        data = urlparse.parse_qs(url.split("?", 1)[1])
-+
-+        token = data["oauth_token"][0]
-+        verifier = data["oauth_verifier"][0]
-+ 
-+        request = oauth.OAuthRequest.from_consumer_and_token(
-+          self.consumer, self.token,
-+          http_url="https://api.twitter.com/oauth/access_token",
-+          parameters={"oauth_verifier": str(verifier)})
-+        request.sign_request(sigmeth, self.consumer, self.token)
-+ 
-+        tokendata = urllib2.urlopen(request.http_url, request.to_postdata()).read()
-+        data = urlparse.parse_qs(tokendata)
-+ 
-+        self.account["access_token"] = data["oauth_token"][0]
-+        self.account["secret_token"] = data["oauth_token_secret"][0]
-+        self.account["username"] = data["screen_name"][0]
-+        self.account["user_id"] = data["user_id"][0]
-+ 
-+        self.ui.get_object("hbox_twitter_auth").hide()
-+        self.ui.get_object("fb_auth_done_label").set_label(_("%s has been authorized by Twitter") % str(self.account["username"]))
-+        self.ui.get_object("hbox_twitter_auth_done").show()
-+        if self.dialog and self.account.has_key("id"):
-+          self.dialog.get_object("vbox_save").show()
-+        elif self.dialog:
-+          self.dialog.get_object("vbox_create").show()
-+      except:
-+        pass
-+
-+      web.hide()
-+      self.window.resize(*self.winsize)
-+      self.ui.get_object("vbox1").show()
-+      self.ui.get_object("expander1").show()
-+ 
-+    if title.get_title() == "Failure":
-+      d = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR,
-+        gtk.BUTTONS_OK, _("Authorization failed. Please try again."))
-+      if d.run(): d.destroy()
-+ 
-+      web.hide()
-+      self.window.resize(*self.winsize)
-diff -up gwibber-832bzr/gwibber/lib/gtk/widgets.py.oauth gwibber-832bzr/gwibber/lib/gtk/widgets.py
---- gwibber-832bzr/gwibber/lib/gtk/widgets.py.oauth	2010-08-31 16:45:27.997134002 -0400
-+++ gwibber-832bzr/gwibber/lib/gtk/widgets.py	2010-08-31 16:45:56.099133987 -0400
-@@ -21,6 +21,13 @@
- from dbus.mainloop.glib import DBusGMainLoop
- import gobject, gtk
- from gwibber.microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from gwibber.microblog.util.custom import *
-+except:
-+  pass
-+
- import gwibber.gwui, gwibber.microblog.util, gwibber.resources
- import gettext
- from gettext import lgettext as _
-diff -up gwibber-832bzr/gwibber/microblog/config.py.oauth gwibber-832bzr/gwibber/microblog/config.py
---- gwibber-832bzr/gwibber/microblog/config.py.oauth	2010-08-31 16:46:09.325133999 -0400
-+++ gwibber-832bzr/gwibber/microblog/config.py	2010-08-31 16:46:30.115134011 -0400
-@@ -4,6 +4,12 @@ except: from gnome import gconf
- 
- from . import gwp
- from util.const import *
-+# Try to import * from custom, install custom.py to include packaging
-+# customizations like distro API keys, etc
-+try:
-+  from util.custom import *
-+except:
-+  pass
- 
- GCONF_DIR = "/apps/gwibber"
- GCONF_PREFERENCES_DIR = GCONF_DIR + "/preferences"
-diff -up gwibber-832bzr/gwibber/microblog/dispatcher.py.oauth gwibber-832bzr/gwibber/microblog/dispatcher.py
---- gwibber-832bzr/gwibber/microblog/dispatcher.py.oauth	2010-08-31 16:46:38.366134002 -0400
-+++ gwibber-832bzr/gwibber/microblog/dispatcher.py	2010-08-31 16:46:55.106134002 -0400
-@@ -12,6 +12,13 @@ from util import resources
- from util import exceptions
- from util.const import *
- 
-+# Try to import * from custom, install custom.py to include packaging
-+# customizations like distro API keys, etc
-+try:
-+  from util.custom import *
-+except:
-+  pass
-+
- try:
-   import indicate
- except:
-diff -up gwibber-832bzr/gwibber/microblog/facebook.py.oauth gwibber-832bzr/gwibber/microblog/facebook.py
---- gwibber-832bzr/gwibber/microblog/facebook.py.oauth	2010-08-31 16:47:02.423134016 -0400
-+++ gwibber-832bzr/gwibber/microblog/facebook.py	2010-08-31 16:47:16.441134001 -0400
-@@ -5,6 +5,12 @@ import hashlib, mx.DateTime, time
- from os.path import join, getmtime, exists
- from gettext import lgettext as _
- from util.const import *
-+# Try to import * from custom, install custom.py to include packaging
-+# customizations like distro API keys, etc
-+try:
-+  from util.custom import *
-+except:
-+  pass
- 
- log.logger.name = "Facebook"
- 
-diff -up gwibber-832bzr/gwibber/microblog/twitter.py.oauth gwibber-832bzr/gwibber/microblog/twitter.py
---- gwibber-832bzr/gwibber/microblog/twitter.py.oauth	2010-08-31 16:27:51.634133991 -0400
-+++ gwibber-832bzr/gwibber/microblog/twitter.py	2010-08-31 16:55:04.130134002 -0400
-@@ -1,6 +1,7 @@
- import network, util, htmllib, re
--from util import log
--from util import exceptions
-+import gnomekeyring
-+from oauth import oauth
-+from util import log, exceptions
- from gettext import lgettext as _
- log.logger.name = "Twitter"
- 
-@@ -9,14 +10,15 @@ PROTOCOL_INFO = {
-   "version": "1.0",
-   
-   "config": [
--    "private:password",
-+    "secret_token",
-+    "access_token",
-     "username",
-     "color",
-     "receive_enabled",
-     "send_enabled",
-   ],
-  
--  "authtype": "login",
-+  "authtype": "oauth1a",
-   "color": "#729FCF",
- 
-   "features": [
-@@ -48,6 +50,7 @@ PROTOCOL_INFO = {
- }
- 
- URL_PREFIX = "https://twitter.com"
-+API_PREFIX = "https://api.twitter.com/1"
- 
- import htmlentitydefs
- import unicodedata
-@@ -95,7 +98,13 @@ def unescape(s):
- 
- class Client:
-   def __init__(self, acct):
-+    if not acct.has_key("access_token") and not acct.has_key("secret_token"):
-+      raise exceptions.GwibberServiceError("keyring")
-+    if acct.has_key("secret_token") and acct.has_key("password"): acct.pop("password")
-     self.account = acct
-+    self.sigmethod = oauth.OAuthSignatureMethod_HMAC_SHA1()
-+    self.consumer = oauth.OAuthConsumer(*util.resources.get_twitter_keys())
-+    self.token = oauth.OAuthToken(acct["access_token"], acct["secret_token"])
- 
-   def _common(self, data):
-     m = {}; 
-@@ -208,10 +217,16 @@ class Client:
-     }
- 
-   def _get(self, path, parse="message", post=False, single=False, **args):
--    url = "/".join((URL_PREFIX, path))
-+    url = "/".join((API_PREFIX, path))
-+
-+    request = oauth.OAuthRequest.from_consumer_and_token(self.consumer, self.token,
-+        http_method=post and "POST" or "GET", http_url=url, parameters=util.compact(args))
-+    request.sign_request(self.sigmethod, self.consumer, self.token)
-     
--    data = network.Download(url, util.compact(args) or None, post,
--        self.account["username"], self.account["password"]).get_json()
-+    if post:
-+      data = network.Download(request.to_url(), util.compact(args), post).get_json()
-+    else:
-+      data = network.Download(request.to_url(), None, post).get_json()
- 
-     if isinstance(data, dict) and data.get("errors", 0):
-       if "authenticate" in data["errors"][0]["message"]:
-@@ -223,6 +238,9 @@ class Client:
-         return []
-     elif isinstance(data, dict) and data.get("error", 0):
-       log.logger.error("%s failure - %s", PROTOCOL_INFO["name"], data["error"])
-+      if "Incorrect signature" in data["error"]:
-+        print data
-+        raise exceptions.GwibberServiceError("keyring")
-       return []
-     elif isinstance(data, str):
-       log.logger.error("%s unexpected result - %s", PROTOCOL_INFO["name"], data)
-@@ -279,7 +297,7 @@ class Client:
- 
-   def send(self, message):
-     return self._get("statuses/update.json", post=True, single=True,
--        status=message, source="gwibbernet")
-+        status=message)
-   
-   def send_private(self, message, private):
-     return self._get("direct_messages/new.json", "private", post=True, single=True,
-@@ -287,4 +305,4 @@ class Client:
- 
-   def send_thread(self, message, target):
-     return self._get("statuses/update.json", post=True, single=True,
--        status=message, source="gwibbernet", in_reply_to_status_id=target["mid"])
-+        status=message, in_reply_to_status_id=target["mid"])
-diff -up gwibber-832bzr/gwibber/microblog/util/const.py.oauth gwibber-832bzr/gwibber/microblog/util/const.py
---- gwibber-832bzr/gwibber/microblog/util/const.py.oauth	2010-08-31 16:49:48.009134056 -0400
-+++ gwibber-832bzr/gwibber/microblog/util/const.py	2010-08-31 16:50:12.243134017 -0400
-@@ -17,6 +17,8 @@ if environ.has_key("FB_APP_KEY"):
- else:
-   FB_APP_KEY = "71b85c6d8cb5bbb9f1a3f8bbdcdd4b05"
- 
-+TWITTER_OAUTH_KEY = "VDOuA5qCJ1XhjaSa4pl76g"
-+TWITTER_OAUTH_SECRET = "BqHlB8sMz5FhZmmFimwgiIdB0RiBr72Y0bio49IVJM"
- 
- # Gwibber
- MAX_MESSAGE_LENGTH = 140
 diff -up gwibber-832bzr/gwibber/microblog/util/custom.py.oauth gwibber-832bzr/gwibber/microblog/util/custom.py
 --- gwibber-832bzr/gwibber/microblog/util/custom.py.oauth	2010-08-31 17:09:53.519134001 -0400
 +++ gwibber-832bzr/gwibber/microblog/util/custom.py	2010-08-31 17:10:37.514134003 -0400
@@ -412,272 +19,3 @@ diff -up gwibber-832bzr/gwibber/microblog/util/custom.py.oauth gwibber-832bzr/gw
 +
 +TWITTER_OAUTH_KEY = "GDbYbywyvbcPfe26MqrifQ"
 +TWITTER_OAUTH_SECRET = "U4C34CzUW6YYNFinX8RjSTsWWn2bWX08WVdFsxyQ"
-diff -up gwibber-832bzr/gwibber/microblog/util/__init__.py.oauth gwibber-832bzr/gwibber/microblog/util/__init__.py
---- gwibber-832bzr/gwibber/microblog/util/__init__.py.oauth	2010-08-31 16:49:10.855133922 -0400
-+++ gwibber-832bzr/gwibber/microblog/util/__init__.py	2010-08-31 16:49:35.321134001 -0400
-@@ -4,6 +4,13 @@ import log, resources
- import dbus
- from const import *
- 
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from custom import *
-+except:
-+  pass
-+
- COUNT = 200
- 
- def parsetime(t):
-diff -up gwibber-832bzr/gwibber/microblog/util/resources.py.oauth gwibber-832bzr/gwibber/microblog/util/resources.py
---- gwibber-832bzr/gwibber/microblog/util/resources.py.oauth	2010-08-31 16:29:16.131134001 -0400
-+++ gwibber-832bzr/gwibber/microblog/util/resources.py	2010-08-31 16:51:05.777134002 -0400
-@@ -9,6 +9,14 @@ from os.path import join, isdir, realpat
- from os import makedirs
- import Image, log
- from gwibber.microblog import network
-+from const import *
-+ 
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from custom import *
-+except:
-+  pass
- 
- log.logger.name = "Gwibber Dispatcher Resources"
- 
-@@ -36,6 +44,10 @@ except:
- 
- DATA_DIRS += [os.path.join(d, PROGRAM_NAME) for d in DATA_BASE_DIRS]
- 
-+def get_twitter_keys():
-+  # Distros should register their own keys and not rely on the defaults
-+  return TWITTER_OAUTH_KEY, TWITTER_OAUTH_SECRET
-+
- def get_avatar_path(url):
-   avatar_cache_dir = realpath(join(CACHE_BASE_DIR, "gwibber", "avatars"))
-   if not isdir(avatar_cache_dir):
-diff -up gwibber-832bzr/gwibber/preferences.py.oauth gwibber-832bzr/gwibber/preferences.py
---- gwibber-832bzr/gwibber/preferences.py.oauth	2010-08-31 16:51:17.825134001 -0400
-+++ gwibber-832bzr/gwibber/preferences.py	2010-08-31 16:51:46.682134018 -0400
-@@ -36,6 +36,13 @@ if hasattr(gettext, 'bind_textdomain_cod
- gettext.textdomain('gwibber')
- 
- from microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging 
-+# customizations like distro API keys, etc
-+try:
-+  from microblog.util.custom import *
-+except:
-+  pass
-+
- from microblog.urlshorter import PROTOCOLS as urlshorters
- 
- from dbus.mainloop.glib import DBusGMainLoop
-diff -up gwibber-832bzr/gwibber/upgrade.py.oauth gwibber-832bzr/gwibber/upgrade.py
---- gwibber-832bzr/gwibber/upgrade.py.oauth	2010-08-31 16:51:52.866134001 -0400
-+++ gwibber-832bzr/gwibber/upgrade.py	2010-08-31 16:52:27.140133874 -0400
-@@ -1,6 +1,13 @@
- import gconf
- import gwibber.lib, gwibber.util
- from gwibber.microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging
-+# customizations like distro API keys, etc
-+try:
-+  from gwibber.microblog.util.custom import *
-+except:
-+  pass
-+
- from desktopcouch.records.server import CouchDatabase
- from desktopcouch.records.record import Record as CouchRecord
- 
-diff -up gwibber-832bzr/gwibber/util.py.oauth gwibber-832bzr/gwibber/util.py
---- gwibber-832bzr/gwibber/util.py.oauth	2010-08-31 16:52:32.791134100 -0400
-+++ gwibber-832bzr/gwibber/util.py	2010-08-31 16:52:46.877133979 -0400
-@@ -1,5 +1,11 @@
- import gtk, dbus, resources, os, mx.DateTime, webbrowser
- from microblog.util.const import *
-+# Try to import * from custom, install custom.py to include packaging
-+# customizations like distro API keys, etc
-+try:
-+  from microblog.util.custom import *
-+except:
-+  pass
- 
- import gettext
- from gettext import ngettext
-diff -up gwibber-832bzr/ui/gwibber-accounts-twitter.ui.oauth gwibber-832bzr/ui/gwibber-accounts-twitter.ui
---- gwibber-832bzr/ui/gwibber-accounts-twitter.ui.oauth	2010-08-31 16:30:20.416133999 -0400
-+++ gwibber-832bzr/ui/gwibber-accounts-twitter.ui	2010-08-31 16:32:40.235133923 -0400
-@@ -7,79 +7,46 @@
-     <property name="orientation">vertical</property>
-     <property name="spacing">6</property>
-     <child>
--      <object class="GtkTable" id="table_common_settings">
-+      <object class="GtkVBox" id="vbox1">
-         <property name="visible">True</property>
--        <property name="n_rows">3</property>
--        <property name="n_columns">3</property>
--        <property name="column_spacing">12</property>
--        <property name="row_spacing">6</property>
-+        <property name="orientation">vertical</property>
-         <child>
--          <object class="GtkEntry" id="password">
-+          <object class="GtkHBox" id="hbox_twitter_auth">
-             <property name="visible">True</property>
--            <property name="can_focus">True</property>
--            <property name="visibility">False</property>
--            <property name="invisible_char">&#x25CF;</property>
--          </object>
--          <packing>
--            <property name="left_attach">1</property>
--            <property name="right_attach">3</property>
--            <property name="top_attach">2</property>
--            <property name="bottom_attach">3</property>
--            <property name="y_options"></property>
--          </packing>
--        </child>
--        <child>
--          <object class="GtkEntry" id="username">
--            <property name="visible">True</property>
--            <property name="can_focus">True</property>
--            <property name="invisible_char">&#x25CF;</property>
--          </object>
--          <packing>
--            <property name="left_attach">1</property>
--            <property name="right_attach">3</property>
--            <property name="y_options"></property>
--          </packing>
--        </child>
--        <child>
--          <object class="GtkLabel" id="label_username">
--            <property name="visible">True</property>
--            <property name="xalign">0</property>
--            <property name="label" translatable="yes">Login I_D:</property>
--            <property name="use_underline">True</property>
--            <property name="mnemonic_widget">username</property>
--          </object>
--          <packing>
--            <property name="x_options">GTK_FILL</property>
--            <property name="y_options"></property>
--          </packing>
--        </child>
--        <child>
--          <object class="GtkLabel" id="label_password">
--            <property name="visible">True</property>
--            <property name="xalign">0</property>
--            <property name="label" translatable="yes">Pass_word:</property>
--            <property name="use_underline">True</property>
--            <property name="justify">right</property>
--            <property name="mnemonic_widget">password</property>
-+            <child>
-+              <object class="GtkButton" id="twitter_auth_button">
-+                <property name="label" translatable="yes">_Authorize</property>
-+                <property name="visible">True</property>
-+                <property name="can_focus">True</property>
-+                <property name="receives_default">True</property>
-+                <property name="use_underline">True</property>
-+                <signal name="clicked" handler="on_twitter_auth_clicked"/>
-+              </object>
-+              <packing>
-+                <property name="position">0</property>
-+              </packing>
-+            </child>
-+            <child>
-+              <object class="GtkLabel" id="fb_auth_label">
-+                <property name="visible">True</property>
-+                <property name="label" translatable="yes">Authorize with twitter</property>
-+              </object>
-+              <packing>
-+                <property name="position">1</property>
-+              </packing>
-+            </child>
-           </object>
-           <packing>
--            <property name="top_attach">2</property>
--            <property name="bottom_attach">3</property>
--            <property name="x_options">GTK_FILL</property>
--            <property name="y_options"></property>
-+            <property name="position">0</property>
-           </packing>
-         </child>
-         <child>
--          <object class="GtkVBox" id="vbox1">
-+          <object class="GtkHBox" id="hbox_twitter_auth_done">
-             <property name="visible">True</property>
--            <property name="orientation">vertical</property>
-             <child>
--              <object class="GtkLabel" id="label_username_example">
-+              <object class="GtkLabel" id="fb_auth_done_label">
-                 <property name="visible">True</property>
--                <property name="xalign">0</property>
--                <property name="xpad">3</property>
--                <property name="label" translatable="yes">&lt;span size="small"&gt;&lt;b&gt;Example:&lt;/b&gt; username&lt;/span&gt;</property>
--                <property name="use_markup">True</property>
-+                <property name="label" translatable="yes">Twitter authorized</property>
-               </object>
-               <packing>
-                 <property name="position">0</property>
-@@ -87,22 +54,11 @@
-             </child>
-           </object>
-           <packing>
--            <property name="left_attach">1</property>
--            <property name="right_attach">2</property>
--            <property name="top_attach">1</property>
--            <property name="bottom_attach">2</property>
-+            <property name="position">1</property>
-           </packing>
-         </child>
--        <child>
--          <placeholder/>
--        </child>
--        <child>
--          <placeholder/>
--        </child>
-       </object>
-       <packing>
--        <property name="expand">False</property>
--        <property name="fill">False</property>
-         <property name="position">0</property>
-       </packing>
-     </child>
---- gwibber-832bzr/gwibber/accounts.py.oauth	2010-08-31 17:52:29.405133913 -0400
-+++ gwibber-832bzr/gwibber/accounts.py	2010-08-31 17:53:55.884134015 -0400
-@@ -134,15 +134,15 @@
-     self.account_store.clear()
-     accounts = json.loads(self.gwibber.GetAccounts())
-     for account in accounts:
--      if self.verify_account(account):
-         icon = self.get_icon(account["service"])
-         name = "%s (%s)" % (self.services[account["service"]]["name"], account["username"])
-         private_fields = [f.split(":")[-1] for f in self.services[account["service"]]["config"] if ":" in f]
-         color = None
-         for f in private_fields:
-+          if not account.has_key(f): account[f] = ":KEYRING:MISSING"
-           if account[f].startswith(":KEYRING:"):
-             value = self.get_from_keyring(account["id"], f)
--            if not value: 
-+            if value is None: 
-               color = "pink"
-         self.account_store.append(None, [name, icon, account, color])
- 
-@@ -189,6 +189,8 @@
-       config = config.replace("private:", "")
-       widget = self.account_widget.ui.get_object(config)
- 
-+      value = None
-+
-       for p in ["text", "active", "color"]:
-         if widget and hasattr(widget.props, p):
-           value = getattr(widget.props, p)
-@@ -199,7 +201,7 @@
- 	  self.account[config] = ":KEYRING:%s" % self.put_in_keyring(
- 	      self.account["id"], config, self.account[config])
- 
--      if value is not None:
-+      if value:
-         if isinstance(value, gtk.gdk.Color):
-           value = gtk.color_selection_palette_to_string(
-             gtk.color_selection_palette_from_string(value.to_string()))
diff --git a/gwibber.spec b/gwibber.spec
index 6870bf7..eed8154 100644
--- a/gwibber.spec
+++ b/gwibber.spec
@@ -1,7 +1,7 @@
  %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
 
-%global basever 2.31.92
-%global bzr_rev 838
+%global basever 2.31.93
+%global bzr_rev 847
 
 Name:           gwibber
 Version:        %{basever}
@@ -33,10 +33,6 @@ Patch3:		gwibber-794bzr-no-Position-printing.patch
 # Quit when minimized to icon and I tell the icon to quit.
 Patch4:		gwibber-794bzr-quit-when-minimized.patch
 
-# Fix for threads-gone-wild
-# https://bugs.launchpad.net/gwibber/+bug/624918
-Patch5:		gwibber-825bzr-threads-gone-wild.patch
-
 # Oauth bits
 Patch6:		gwibber-832bzr-twitter-oauth.patch
 
@@ -72,7 +68,6 @@ and GTK. It supports Twitter, Jaiku, Identi.ca, Facebook, and Digg.
 %patch2 -p1 -b .no-libproxy
 %patch3 -p1 -b .no-position-printing
 %patch4 -p1 -b .quit
-%patch5 -p1 -b .threads-gone-wild
 %patch6 -p1 -b .oauth
 
 sed -i -e '/^#! \?\//, 1d' $(find %{name} | grep "\.py$")
@@ -117,6 +112,9 @@ rm -rf %{buildroot}
 %{_datadir}/indicators/messages/applications/gwibber
 
 %changelog
+* Thu Sep  9 2010 Tom "spot" Callaway <tcallawa at redhat.com> - 1:2.31.92-1.847bzr
+- update to 2.31.93 (847bzr)
+
 * Fri Sep  3 2010 Tom "spot" Callaway <tcallawa at redhat.com> - 1:2.31.92-1.838bzr
 - update to 2.31.92 (838bzr)
 
diff --git a/sources b/sources
index 047cb81..eb8e20e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-4cf08e1265c53741e1c4a15e50830af2  gwibber-838bzr.tar.gz
+50aa187a09c8fa219975a1448fc4b832  gwibber-847bzr.tar.gz


More information about the scm-commits mailing list