Prepare for py3 port.

This commit is contained in:
Bill Dengler 2017-06-16 21:06:26 +00:00
parent 6d33f310ab
commit 4bdc2b2a6a
75 changed files with 7017 additions and 6922 deletions

View File

@ -1,14 +1,15 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import time
import platform
if platform.system() == "Windows":
import wx
from wxUI import buffers, dialogs, commonMessageDialogs, menus
import user
from . import user
elif platform.system() == "Linux":
from gi.repository import Gtk
from gtkUI import buffers, dialogs, commonMessageDialogs
import messages
from . import messages
import widgetUtils
import arrow
import webbrowser
@ -269,7 +270,7 @@ class baseBufferController(bufferController):
tweetsList = []
tweet_id = tweet["id"]
message = None
if tweet.has_key("message"):
if "message" in tweet:
message = tweet["message"]
try:
tweet = self.session.twitter.twitter.show_status(id=tweet_id, include_ext_alt_text=True, tweet_mode="extended")
@ -363,7 +364,7 @@ class baseBufferController(bufferController):
if self.name[:-9] in self.session.settings["other_buffers"]["timelines"]:
self.session.settings["other_buffers"]["timelines"].remove(self.name[:-9])
self.session.settings.write()
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@ -376,7 +377,7 @@ class baseBufferController(bufferController):
if dlg == widgetUtils.YES:
if self.name[:-9] in self.session.settings["other_buffers"]["favourites_timelines"]:
self.session.settings["other_buffers"]["favourites_timelines"].remove(self.name[:-9])
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@ -494,7 +495,7 @@ class baseBufferController(bufferController):
self.show_menu(widgetUtils.MENU, pos=self.buffer.list.list.GetPosition())
def get_tweet(self):
if self.session.db[self.name][self.buffer.list.get_selected()].has_key("retweeted_status"):
if "retweeted_status" in self.session.db[self.name][self.buffer.list.get_selected()]:
tweet = self.session.db[self.name][self.buffer.list.get_selected()]["retweeted_status"]
else:
tweet = self.session.db[self.name][self.buffer.list.get_selected()]
@ -509,7 +510,7 @@ class baseBufferController(bufferController):
tweet = self.get_right_tweet()
screen_name = tweet["user"]["screen_name"]
id = tweet["id"]
twishort_enabled = tweet.has_key("twishort")
twishort_enabled = "twishort" in tweet
users = utils.get_all_mentioned(tweet, self.session.db, field="screen_name")
ids = utils.get_all_mentioned(tweet, self.session.db, field="id_str")
message = messages.reply(self.session, _(u"Reply"), _(u"Reply to %s") % (screen_name,), "", twishort_enabled=self.session.settings["mysc"]["twishort_enabled"], users=users, ids=ids)
@ -580,7 +581,7 @@ class baseBufferController(bufferController):
self._retweet_with_comment(tweet, id)
def _retweet_with_comment(self, tweet, id, comment=''):
if tweet.has_key("full_text"):
if "full_text" in tweet:
comments = tweet["full_text"]
else:
comments = tweet["text"]
@ -737,7 +738,7 @@ class listBufferController(baseBufferController):
if dlg == widgetUtils.YES:
if self.name[:-5] in self.session.settings["other_buffers"]["lists"]:
self.session.settings["other_buffers"]["lists"].remove(self.name[:-5])
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@ -824,7 +825,7 @@ class peopleBufferController(baseBufferController):
if dlg == widgetUtils.YES:
if self.name[:-10] in self.session.settings["other_buffers"]["followers_timelines"]:
self.session.settings["other_buffers"]["followers_timelines"].remove(self.name[:-10])
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@ -838,7 +839,7 @@ class peopleBufferController(baseBufferController):
if dlg == widgetUtils.YES:
if self.name[:-8] in self.session.settings["other_buffers"]["friends_timelines"]:
self.session.settings["other_buffers"]["friends_timelines"].remove(self.name[:-8])
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
self.session.settings.write()
return True
@ -996,7 +997,7 @@ class searchBufferController(baseBufferController):
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
self.session.settings.write()
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@ -1045,7 +1046,7 @@ class searchPeopleBufferController(peopleBufferController):
self.args = args
self.kwargs = kwargs
self.function = function
if self.kwargs.has_key("page") == False:
if ("page" in self.kwargs) == False:
self.kwargs["page"] = 1
def start_stream(self, mandatory=False):
@ -1105,7 +1106,7 @@ class searchPeopleBufferController(peopleBufferController):
if self.name[:-11] in self.session.settings["other_buffers"]["tweet_searches"]:
self.session.settings["other_buffers"]["tweet_searches"].remove(self.name[:-11])
self.session.settings.write()
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@ -1177,7 +1178,7 @@ class trendsBufferController(bufferController):
if self.name[:-3] in self.session.settings["other_buffers"]["trending_topic_buffers"]:
self.session.settings["other_buffers"]["trending_topic_buffers"].remove(self.name[:-3])
self.session.settings.write()
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:
@ -1275,7 +1276,7 @@ class conversationBufferController(searchBufferController):
else:
dlg = widgetUtils.YES
if dlg == widgetUtils.YES:
if self.session.db.has_key(self.name):
if self.name in self.session.db:
self.session.db.pop(self.name)
return True
elif dlg == widgetUtils.NO:

View File

@ -1,26 +1,27 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import platform
system = platform.system()
import application
if system == "Windows":
from update import updater
from wxUI import (view, dialogs, commonMessageDialogs, sysTrayIcon)
import settings
from . import settings
from extra import SoundsTutorial, ocr
import keystrokeEditor
from keyboard_handler.wx_handler import WXKeyboardHandler
import userActionsController
import trendingTopics
import user
import listsController
from . import userActionsController
from . import trendingTopics
from . import user
from . import listsController
# from issueReporter import issueReporter
elif system == "Linux":
from gtkUI import (view, commonMessageDialogs)
from twitter import utils, compose
from sessionmanager import manager, sessionManager
import buffersController
import messages
from . import buffersController
from . import messages
from sessionmanager import session as session_
from pubsub import pub
import sound
@ -403,7 +404,7 @@ class Controller(object):
def set_buffer_positions(self, session):
"Sets positions for buffers if values exist in the database."
for i in self.buffers:
if i.account == session.db["user_name"] and session.db.has_key(i.name+"_pos") and hasattr(i.buffer,'list'):
if i.account == session.db["user_name"] and i.name+"_pos" in session.db and hasattr(i.buffer,'list'):
i.buffer.list.select_item(session.db[str(i.name+"_pos")])
def logout_account(self, session_id):
@ -1590,7 +1591,7 @@ class Controller(object):
output.speak(_(u"Invalid buffer"))
return
tweet = buffer.get_tweet()
if tweet.has_key("entities") == False or tweet["entities"].has_key("media") == False:
if ("entities" in tweet) == False or ("media" in tweet["entities"]) == False:
output.speak(_(u"This tweet doesn't contain images"))
return
if len(tweet["entities"]["media"]) > 1:

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import re
import platform
import attach
from . import attach
system = platform.system()
import widgetUtils
import output
@ -204,25 +205,25 @@ class viewTweet(basicTweet):
text = ""
for i in xrange(0, len(tweetList)):
# tweets with message keys are longer tweets, the message value is the full messaje taken from twishort.
if tweetList[i].has_key("message") and tweetList[i]["is_quote_status"] == False:
if "message" in tweetList[i] and tweetList[i]["is_quote_status"] == False:
value = "message"
else:
value = "full_text"
if tweetList[i].has_key("retweeted_status") and tweetList[i]["is_quote_status"] == False:
if tweetList[i].has_key("message") == False:
if "retweeted_status" in tweetList[i] and tweetList[i]["is_quote_status"] == False:
if ("message" in tweetList[i]) == False:
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i]["retweeted_status"]["full_text"])
else:
text = text + "rt @%s: %s\n" % (tweetList[i]["retweeted_status"]["user"]["screen_name"], tweetList[i][value])
else:
text = text + " @%s: %s\n" % (tweetList[i]["user"]["screen_name"], tweetList[i][value])
# tweets with extended_entities could include image descriptions.
if tweetList[i].has_key("extended_entities") and tweetList[i]["extended_entities"].has_key("media"):
if "extended_entities" in tweetList[i] and "media" in tweetList[i]["extended_entities"]:
for z in tweetList[i]["extended_entities"]["media"]:
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
if tweetList[i].has_key("retweeted_status") and tweetList[i]["retweeted_status"].has_key("extended_entities") and tweetList[i]["retweeted_status"]["extended_entities"].has_key("media"):
if "retweeted_status" in tweetList[i] and "extended_entities" in tweetList[i]["retweeted_status"] and "media" in tweetList[i]["retweeted_status"]["extended_entities"]:
for z in tweetList[i]["retweeted_status"]["extended_entities"]["media"]:
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
# set rt and likes counters.
rt_count = str(tweet["retweet_count"])
@ -230,25 +231,25 @@ class viewTweet(basicTweet):
# Gets the client from where this tweet was made.
source = str(re.sub(r"(?s)<.*?>", "", tweet["source"].encode("utf-8")))
if text == "":
if tweet.has_key("message"):
if "message" in tweet:
value = "message"
else:
value = "full_text"
if tweet.has_key("retweeted_status"):
if tweet.has_key("message") == False:
if "retweeted_status" in tweet:
if ("message" in tweet) == False:
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet["retweeted_status"]["full_text"])
else:
text = "rt @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], tweet[value])
else:
text = tweet[value]
text = self.clear_text(text)
if tweet.has_key("extended_entities") and tweet["extended_entities"].has_key("media"):
if "extended_entities" in tweet and "media" in tweet["extended_entities"]:
for z in tweet["extended_entities"]["media"]:
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
if tweet.has_key("retweeted_status") and tweet["retweeted_status"].has_key("extended_entities") and tweet["retweeted_status"]["extended_entities"].has_key("media"):
if "retweeted_status" in tweet and "extended_entities" in tweet["retweeted_status"] and "media" in tweet["retweeted_status"]["extended_entities"]:
for z in tweet["retweeted_status"]["extended_entities"]["media"]:
if z.has_key("ext_alt_text") and z["ext_alt_text"] != None:
if "ext_alt_text" in z and z["ext_alt_text"] != None:
image_description.append(z["ext_alt_text"])
self.message = message.viewTweet(text, rt_count, favs_count, source.decode("utf-8"))
self.message.set_title(len(text))

View File

@ -71,7 +71,7 @@ class userActionsController(object):
def ignore_client(self, user):
tweet = self.buffer.get_right_tweet()
if tweet.has_key("sender"):
if "sender" in tweet:
output.speak(_(u"You can't ignore direct messages"))
return
client = re.sub(r"(?s)<.*?>", "", tweet["source"])

View File

@ -16,10 +16,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
from __future__ import absolute_import
import widgetUtils
import wx_ui
import wx_transfer_dialogs
import transfer
from . import wx_ui
from . import wx_transfer_dialogs
from . import transfer
import output
import tempfile
import sound

View File

@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import sys
import threading
import time
import logging
from utils import convert_bytes
from .utils import convert_bytes
from pubsub import pub
log = logging.getLogger("extra.AudioUploader.transfer")
from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from utils import *
from .utils import *
import widgetUtils
class UploadDialog(widgetUtils.BaseDialog):

View File

@ -1 +1,2 @@
from soundsTutorial import soundsTutorial
from __future__ import absolute_import
from .soundsTutorial import soundsTutorial

View File

@ -1,15 +1,16 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import platform
import widgetUtils
import os
import paths
import logging
log = logging.getLogger("extra.SoundsTutorial.soundsTutorial")
import soundsTutorial_constants
from . import soundsTutorial_constants
if platform.system() == "Windows":
import wx_ui as UI
from . import wx_ui as UI
elif platform.system() == "Linux":
import gtk_ui as UI
from . import gtk_ui as UI
class soundsTutorial(object):
def __init__(self, sessionObject):

View File

@ -1,5 +1,7 @@
#-*- coding: utf-8 -*-
import reverse_sort
from __future__ import absolute_import
#-*- coding: utf-8 -*-
from . import reverse_sort
import application
actions = reverse_sort.reverse_sort([ ("audio", _(u"Audio tweet.")),
("create_timeline", _(u"User timeline buffer created.")),

View File

@ -1,4 +1,5 @@
import spellchecker
from __future__ import absolute_import
from . import spellchecker
import platform
if platform.system() == "Windows":
from wx_ui import *
from .wx_ui import *

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import logging
log = logging.getLogger("extra.SpellChecker.spellChecker")
import wx_ui
from . import wx_ui
import widgetUtils
import output
import config
@ -9,7 +10,7 @@ import languageHandler
from enchant.checker import SpellChecker
from enchant.errors import DictNotFoundError
from enchant import tokenize
import twitterFilter
from . import twitterFilter
class spellChecker(object):
def __init__(self, text, dictionary):
@ -41,7 +42,7 @@ class spellChecker(object):
def check(self):
try:
self.checker.next()
next(self.checker)
textToSay = _(u"Misspelled word: %s") % (self.checker.word,)
context = u"... %s %s %s" % (self.checker.leading_context(10), self.checker.word, self.checker.trailing_context(10))
self.dialog.set_title(textToSay)

View File

@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
import completion, settings
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import completion, settings

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import output
import storage
import wx_menu
from . import storage
from . import wx_menu
class autocompletionUsers(object):
def __init__(self, window, session_id):

View File

@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
import storage
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import storage
import widgetUtils
import wx_manage
from . import wx_manage
from wxUI import commonMessageDialogs
class autocompletionManage(object):

View File

@ -1,8 +1,10 @@
# -*- coding: utf-8 -*-
import storage
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import storage
import widgetUtils
import wx_settings
import manage
from . import wx_settings
from . import manage
import output
from mysc.thread_utils import call_threaded

View File

@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
import OCRSpace
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import OCRSpace

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import translator
from __future__ import absolute_import
from . import translator
import platform
if platform.system() == "Windows":
import wx_ui as gui
from . import wx_ui as gui

View File

@ -16,7 +16,26 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
import translator
from __future__ import absolute_import
# -*- coding: utf-8 -*-
############################################################
# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo <manuel@manuelcortez.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
from . import translator
import wx
from wxUI.dialogs import baseDialog

View File

@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
""" This module contains some bugfixes for packages used in TWBlue."""
from __future__ import absolute_import
import sys
import fix_arrow # A few new locales for Three languages in arrow.
import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython.
import fix_win32com
import fix_requests #fix cacert.pem location for TWBlue binary copies
from . import fix_arrow # A few new locales for Three languages in arrow.
from . import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython.
from . import fix_win32com
from . import fix_requests #fix cacert.pem location for TWBlue binary copies
def setup():
fix_arrow.fix()
if hasattr(sys, "frozen"):

View File

@ -16,13 +16,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
from __future__ import absolute_import
import keys
import wx
import wx_ui
from . import wx_ui
import widgetUtils
import application
from suds.client import Client
import constants
from . import constants
class reportBug(object):
def __init__(self, user_name):

View File

@ -1,3 +1,4 @@
from main import KeyboardHandler, KeyboardHandlerError
from __future__ import absolute_import
from .main import KeyboardHandler, KeyboardHandlerError
#from wx_handler import WXKeyboardHandler
__all__ = ["KeyboardHandler", "KeyboardHandlerError", "WXKeyboardHandler", "WXPanelKeyboardHandler"]

View File

@ -1,7 +1,8 @@
from __future__ import absolute_import
import platform
if platform.system() == 'Linux':
from linux import LinuxKeyboardHandler as GlobalKeyboardHandler
from .linux import LinuxKeyboardHandler as GlobalKeyboardHandler
elif platform.system() == 'Windows':
from wx_handler import WXKeyboardHandler as GlobalKeyboardHandler
from .wx_handler import WXKeyboardHandler as GlobalKeyboardHandler
elif platform.system() == 'Darwin':
from osx import OSXKeyboardHandler as GlobalKeyboardHandler
from .osx import OSXKeyboardHandler as GlobalKeyboardHandler

View File

@ -1,4 +1,5 @@
from main import KeyboardHandler
from __future__ import absolute_import
from .main import KeyboardHandler
import threading
import thread
import pyatspi
@ -21,7 +22,7 @@ Unknown modifiers will return ValueError."""
lst.remove(item)
#end if
if len(lst) > 1: #more than one key, parse error
raise ValueError, 'unknown modifier %s' % lst[0]
raise ValueError('unknown modifier %s' % lst[0])
return (m, lst[0].lower())
class AtspiThread(threading.Thread):
def run(self):

View File

@ -18,17 +18,17 @@ class KeyboardHandler(object):
def register_key (self, key, function):
if key in self.active_keys:
raise KeyboardHandlerError, "Key %s is already registered to a function" % key
raise KeyboardHandlerError("Key %s is already registered to a function" % key)
if not callable(function):
raise TypeError, "Must provide a callable to be invoked upon keypress"
raise TypeError("Must provide a callable to be invoked upon keypress")
self.active_keys[key] = function
def unregister_key (self, key, function):
try:
if self.active_keys[key] != function:
raise KeyboardHandlerError, "key %s is not registered to that function" % key
raise KeyboardHandlerError("key %s is not registered to that function" % key)
except KeyError:
raise KeyboardHandlerError, "Key %s not currently registered"
raise KeyboardHandlerError("Key %s not currently registered")
del(self.active_keys[key])
def unregister_all_keys(self):

View File

@ -1,3 +1,4 @@
from __future__ import absolute_import
from AppKit import *
from PyObjCTools import AppHelper
from Carbon.CarbonEvt import RegisterEventHotKey, GetApplicationEventTarget
@ -5,7 +6,7 @@ from Carbon.Events import cmdKey, controlKey
import struct
from threading import Thread
from main import KeyboardHandler
from .main import KeyboardHandler
kEventHotKeyPressedSubtype = 6
kEventHotKeyReleasedSubtype = 9
@ -35,9 +36,9 @@ class OSXKeyboardHandler(KeyboardHandler):
#replacements
#Modifier keys:
for index, item in enumerate(key[0:-1]):
if self.replacement_mods.has_key(item):
if item in self.replacement_mods:
key[index] = self.replacement_mods[item]
if self.replacement_keys.has_key(key[-1]):
if key[-1] in self.replacement_keys:
key[-1] = self.replacement_keys[key[-1]]
elif len(key[-1])==1:
key[-1] = ord(str(key[-1]))-36

View File

@ -1,7 +1,8 @@
from __future__ import absolute_import
import win32api
import win32con
from main import KeyboardHandler
from .main import KeyboardHandler
class WindowsKeyboardHandler(KeyboardHandler):

View File

@ -1,7 +1,9 @@
from __future__ import print_function
from __future__ import absolute_import
import functools
import wx
import platform
from main import KeyboardHandler
from .main import KeyboardHandler
__all__ = ['WXKeyboardHandler', 'WXControlKeyboardHandler']
@ -42,18 +44,18 @@ class BaseWXKeyboardHandler(KeyboardHandler):
result -= 277
elif len(key) == 1:
result = ord(key.upper())
print "result: ", result
print("result: ", result)
return result
#try:
if platform.system() == "Windows":
from windows import WindowsKeyboardHandler as keyboard_handler
from .windows import WindowsKeyboardHandler as keyboard_handler
elif platform.system() == "Linux":
from linux import LinuxKeyboardHandler as keyboard_handler
from .linux import LinuxKeyboardHandler as keyboard_handler
elif platform.system() == "Darwin":
from osx import OSXKeyboardHandler as keyboard_handler
from .osx import OSXKeyboardHandler as keyboard_handler
class WXKeyboardHandler(keyboard_handler):
def __init__ (self, parent, *args, **kwargs):

View File

@ -1 +1,2 @@
from keystrokeEditor import KeystrokeEditor
from __future__ import absolute_import
from .keystrokeEditor import KeystrokeEditor

View File

@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import widgetUtils
import config
import wx_ui
import constants
from . import wx_ui
from . import constants
from pubsub import pub
class KeystrokeEditor(object):

View File

@ -32,7 +32,7 @@ class keystrokeEditorDialog(baseDialog.BaseWXDialog):
selection = self.keys.get_selected()
self.keys.clear()
for i in keystrokes:
if actions.has_key(i) == False:
if (i in actions) == False:
continue
action = actions[i]
self.actions.append(i)

View File

@ -19,12 +19,12 @@
from twitter import utils
def is_long(tweet):
if tweet.has_key("is_quote_status") and tweet["is_quote_status"] == True and tweet.has_key("quoted_status"):
if "is_quote_status" in tweet and tweet["is_quote_status"] == True and "quoted_status" in tweet:
return tweet["quoted_status_id"]
return False
def clear_url(tweet):
if tweet.has_key("full_text"):
if "full_text" in tweet:
value = "full_text"
else:
value = "text"

View File

@ -16,6 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
from __future__ import print_function
import requests
import keys
import logging
@ -41,7 +42,7 @@ def is_long(tweet):
# see https://github.com/manuelcortez/TWBlue/issues/103
except TypeError:
pass
if long == False and tweet.has_key("retweeted_status"):
if long == False and "retweeted_status" in tweet:
for url in range(0, len(tweet["retweeted_status"]["entities"]["urls"])):
try:
if tweet["retweeted_status"]["entities"]["urls"][url] != None and "twishort.com" in tweet["retweeted_status"]["entities"]["urls"][url]["expanded_url"]:
@ -83,5 +84,5 @@ def create_tweet(user_token, user_secret, text, media=0):
try:
return response.json()["text_to_tweet"]
except:
print "There was a problem creating a long tweet"
print("There was a problem creating a long tweet")
return 0

View File

@ -1 +1,2 @@
import widgets
from __future__ import absolute_import
from . import widgets

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
""" A cross platform notification system.
Under Linux, the wx.NotificationMessage does not show a notification on the taskbar, so we decided to use dbus for showing notifications for linux and wx for Windows."""
from __future__ import absolute_import
import platform
notify = None
@ -8,10 +9,10 @@ notify = None
def setup():
global notify
if platform.system() == "Windows":
import windows
from . import windows
notify = windows.notification()
elif platform.system() == "Linux":
import linux
from . import linux
notify = linux.notification()
def send(title, text):

View File

@ -1,3 +1,4 @@
from __future__ import print_function
import _winreg
import os
import sys
@ -31,7 +32,7 @@ def getAutoStart(app_name):
def setAutoStart(app_name, enable=True):
"""Configures automatic startup for the application, if the enable argument is set to True. If set to False, deletes the application AutoStart value."""
print paths.get_executable()
print(paths.get_executable())
if getAutoStart(app_name) == enable:
return
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, RUN_REGKEY, 0, _winreg.KEY_WRITE)

View File

@ -1,11 +1,12 @@
# -*- coding: cp1252 -*-
#from config_utils import Configuration, ConfigurationResetException
from __future__ import absolute_import
import config
import paths
import os
import logging
log = logging.getLogger("sessionmanager.manager")
import session_exceptions
from . import session_exceptions
manager = None
def setup():

View File

@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
""" The main session object. Here are the twitter functions to interact with the "model" of TWBlue."""
from __future__ import absolute_import
import urllib2
import config
import twitter
from keys import keyring
import session_exceptions as Exceptions
from . import session_exceptions as Exceptions
import paths
import output
import time
@ -60,7 +61,7 @@ class Session(object):
num = 0
last_id = None
if self.db.has_key(name) == False:
if (name in self.db) == False:
self.db[name] = []
if ignore_older and len(self.db[name]) > 0:
if self.settings["general"]["reverse_timelines"] == False:
@ -90,7 +91,7 @@ class Session(object):
returns the number of items that have been added in this execution"""
num = 0
if self.db.has_key(name) == False:
if (name in self.db) == False:
self.db[name] = {}
self.db[name]["items"] = []
# if len(self.db[name]["items"]) > 0:
@ -172,7 +173,7 @@ class Session(object):
results = []
data = getattr(self.twitter.twitter, update_function)(*args, **kwargs)
if users == True:
if type(data) == dict and data.has_key("cursor"):
if type(data) == dict and "cursor" in data:
self.db[name]["cursor"] = data["next_cursor"]
for i in data["users"]: results.append(i)
elif type(data) == list:
@ -288,7 +289,7 @@ class Session(object):
function str: A function to get the items."""
last_id = -1
if self.db.has_key(name):
if name in self.db:
try:
if self.db[name][0]["id"] > self.db[name][-1]["id"]:
last_id = self.db[name][0]["id"]
@ -309,7 +310,7 @@ class Session(object):
items_ = []
try:
if self.db[name].has_key("cursor") and get_previous:
if "cursor" in self.db[name] and get_previous:
cursor = self.db[name]["cursor"]
else:
cursor = -1
@ -450,7 +451,7 @@ class Session(object):
def get_quoted_tweet(self, tweet):
quoted_tweet = tweet
if tweet.has_key("full_text"):
if "full_text" in tweet:
value = "full_text"
else:
value = "text"
@ -476,7 +477,7 @@ class Session(object):
tweet["twishort"] = True
for i in tweet["entities"]["user_mentions"]:
if "@%s" % (i["screen_name"]) not in tweet["message"] and i["screen_name"] != tweet["user"]["screen_name"]:
if tweet.has_key("retweeted_status") and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
if "retweeted_status" in tweet and tweet["retweeted_status"]["user"]["screen_name"] == i["screen_name"]:
continue
tweet["message"] = u"@%s %s" % (i["screen_name"], tweet["message"])
return tweet

View File

@ -1,19 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import shutil
import widgetUtils
import platform
import output
if platform.system() == "Windows":
import wxUI as view
from . import wxUI as view
from controller import settings
elif platform.system() == "Linux":
import gtkUI as view
from . import gtkUI as view
import paths
import time
import os
import logging
import session
import manager
from . import session
from . import manager
import config_utils
import config
@ -75,7 +76,7 @@ class sessionManagerController(object):
def do_ok(self):
log.debug("Starting sessions...")
for i in self.sessions:
if session.sessions.has_key(i) == True: continue
if (i in session.sessions) == True: continue
s = session.Session(i)
s.get_configuration()
if i not in config.app["sessions"]["ignored_sessions"]:

View File

@ -1 +1,2 @@
import buffers, utils, compose, twitter
from __future__ import absolute_import
from . import buffers, utils, compose, twitter

View File

@ -1 +1,2 @@
import stream, indibidual
from __future__ import absolute_import
from . import stream, indibidual

View File

@ -41,7 +41,7 @@ class timelinesStreamer(TwythonStreamer):
try:
i.users.index(data["user"]["id"])
usr = data["in_reply_to_user_id"]
if (usr != None and usr in self.friends) or data.has_key("retweeted_status"):
if (usr != None and usr in self.friends) or "retweeted_status" in data:
data = self.session.check_quoted_status(data)
data = self.session.check_long_tweet(data)
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data)
@ -62,7 +62,7 @@ class timelinesStreamer(TwythonStreamer):
def on_success(self, data):
# try:
if "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
if data.has_key("extended_tweet"):
if "extended_tweet" in data:
data["full_text"] = data["extended_tweet"]["full_text"]
# data["entities"] = data["extended_tweet"]["entities"]
# log.error(data["extended_entities"])

View File

@ -26,7 +26,7 @@ class streamer(TwythonStreamer):
return self.session.db["user_name"]
def put_data(self, place, data):
if self.session.db.has_key(place):
if place in self.session.db:
if utils.find_item(data["id"], self.session.db[place]) != None:
log.error("duplicated tweet. Ignoring it...")
return False
@ -129,7 +129,7 @@ class streamer(TwythonStreamer):
self.friends = data["friends"]
pub.sendMessage("friends-receibed")
elif "text" in data and utils.is_allowed(data, self.session.settings["twitter"]["ignored_clients"]) == True:
if data.has_key("extended_tweet"):
if "extended_tweet" in data:
data["full_text"] = data["extended_tweet"]["full_text"]
data["entities"] = data["extended_tweet"]["entities"]
# log.error(data["extended_tweet"])
@ -141,7 +141,7 @@ class streamer(TwythonStreamer):
d = self.put_data("home_timeline", data)
if d != False:
pub.sendMessage("item-in-home", data=data, user=self.get_user())
elif data.has_key("event"):
elif "event" in data:
if "favorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:
self.check_favs(data)
elif "unfavorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import platform
system = platform.system()
import utils
from . import utils
import re
import htmlentitydefs
import time
@ -38,9 +39,9 @@ def compose_tweet(tweet, db, relative_times, show_screen_names=False):
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
else:
ts = tweet["created_at"]
if tweet.has_key("message"):
if "message" in tweet:
value = "message"
elif tweet.has_key("full_text"):
elif "full_text" in tweet:
value = "full_text"
else:
value = "text"
@ -51,15 +52,15 @@ def compose_tweet(tweet, db, relative_times, show_screen_names=False):
else:
user = tweet["user"]["name"]
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
if tweet.has_key("retweeted_status"):
if tweet.has_key("message") == False and tweet["retweeted_status"]["is_quote_status"] == False:
if "retweeted_status" in tweet:
if ("message" in tweet) == False and tweet["retweeted_status"]["is_quote_status"] == False:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(tweet["retweeted_status"][value]))
elif tweet["retweeted_status"]["is_quote_status"]:
text = "%s" % (StripChars(tweet[value]))
else:
text = "RT @%s: %s" % (tweet["retweeted_status"]["user"]["screen_name"], StripChars(tweet[value]))
# if text[-1] in chars: text=text+"."
if tweet.has_key("message") == False:
if ("message" in tweet) == False:
urls = utils.find_urls_in_text(text)
for url in range(0, len(urls)):
try:
@ -100,7 +101,7 @@ def compose_dm(tweet, db, relative_times, show_screen_names=False):
def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False):
""" It receives a tweet and returns a list with the user, text for the tweet or message, date and the client where user is."""
if quoted_tweet.has_key("full_text"):
if "full_text" in quoted_tweet:
value = "full_text"
else:
value = "text"
@ -114,9 +115,9 @@ def compose_quoted_tweet(quoted_tweet, original_tweet, show_screen_names=False):
except KeyError: text = "%s" % (StripChars(quoted_tweet[value]))
if text[-1] in chars: text=text+"."
original_user = original_tweet["user"]["screen_name"]
if original_tweet.has_key("message"):
if "message" in original_tweet:
original_text = StripChars(original_tweet["message"])
elif original_tweet.has_key("full_text"):
elif "full_text" in original_tweet:
original_text = StripChars(original_tweet["full_text"])
else:
original_text = StripChars(original_tweet["text"])
@ -133,7 +134,7 @@ def compose_followers_list(tweet, db, relative_times=True, show_screen_names=Fal
ts = original_date.replace(seconds=db["utc_offset"]).format(_(u"dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.getLanguage())
else:
ts = tweet["created_at"]
if tweet.has_key("status"):
if "status" in tweet:
if len(tweet["status"]) > 4 and system == "Windows":
original_date2 = arrow.get(tweet["status"]["created_at"], "ddd MMM D H:m:s Z YYYY", locale="en")
if relative_times:

View File

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import config
import random
import BaseHTTPServer
import webbrowser
from twython import Twython, TwythonError
from keys import keyring
import authorisationHandler
from . import authorisationHandler
from requests import certs
import logging
log = logging.getLogger("sessionTwitter")

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import print_function
import url_shortener, re
import output
from twython import TwythonError
@ -23,9 +24,9 @@ def find_urls_in_text(text):
def find_urls (tweet):
urls = []
if tweet.has_key("message"):
if "message" in tweet:
i = "message"
elif tweet.has_key("full_text"):
elif "full_text" in tweet:
i = "full_text"
else:
i = "text"
@ -59,18 +60,18 @@ def is_audio(tweet):
if i["text"] == "audio":
return True
except:
print tweet["entities"]["hashtags"]
print(tweet["entities"]["hashtags"])
log.exception("Exception while executing is_audio hashtag algorithm")
def is_geocoded(tweet):
if tweet.has_key("coordinates") and tweet["coordinates"] != None:
if "coordinates" in tweet and tweet["coordinates"] != None:
return True
def is_media(tweet):
if tweet["entities"].has_key("media") == False:
if ("media" in tweet["entities"]) == False:
return False
for i in tweet["entities"]["media"]:
if i.has_key("type") and i["type"] == "photo":
if "type" in i and i["type"] == "photo":
return True
return False
@ -85,10 +86,10 @@ def get_all_mentioned(tweet, conf, field="screen_name"):
def get_all_users(tweet, conf):
string = []
if tweet.has_key("retweeted_status"):
if "retweeted_status" in tweet:
string.append(tweet["user"]["screen_name"])
tweet = tweet["retweeted_status"]
if tweet.has_key("sender"):
if "sender" in tweet:
string.append(tweet["sender"]["screen_name"])
else:
if tweet["user"]["screen_name"] != conf["user_name"]:
@ -124,9 +125,9 @@ def api_call(parent=None, call_name=None, preexec_message="", success="", succes
return val
def is_allowed(tweet, clients):
if tweet.has_key("sender"): return True
if "sender" in tweet: return True
allowed = True
if tweet.has_key("retweeted_status"): tweet = tweet["retweeted_status"]
if "retweeted_status" in tweet: tweet = tweet["retweeted_status"]
source = re.sub(r"(?s)<.*?>", "", tweet["source"])
for i in clients:
if i.lower() == source.lower():

View File

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import application
import update
from . import update
import platform
import logging
import output
from requests.exceptions import ConnectionError
from wxUpdater import *
from .wxUpdater import *
logger = logging.getLogger("updater")
def do_update(endpoint=application.update_url):

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
import application
import utils
from . import utils
progress_dialog = None

View File

@ -1,2 +1,3 @@
import shorteners
from __main__ import *
from __future__ import absolute_import
from . import shorteners
from .__main__ import *

View File

@ -1,5 +1,6 @@
from __future__ import absolute_import
from functools import wraps
import shorteners
from . import shorteners
def service_selecter (func):

View File

@ -1,9 +1,10 @@
from url_shortener import URLShortener
from hkcim import HKCShortener
from isgd import IsgdShortener
from onjme import OnjmeShortener
from tinyarrows import TinyArrowsShortener
from tinyurl import TinyurlShortener
from xedcc import XedccShortener
from clckru import ClckruShortener
from __future__ import absolute_import
from .url_shortener import URLShortener
from .hkcim import HKCShortener
from .isgd import IsgdShortener
from .onjme import OnjmeShortener
from .tinyarrows import TinyArrowsShortener
from .tinyurl import TinyurlShortener
from .xedcc import XedccShortener
from .clckru import ClckruShortener
__all__ = ["HKCShortener", "IsgdShortener", "OnjmeShortener", "TinyArrowsShortener", "TinyurlShortener", "XedccShortener", "ClckruShortener"]

View File

@ -1,6 +1,7 @@
from __future__ import absolute_import
import urllib
from url_shortener import URLShortener
from .url_shortener import URLShortener
class ClckruShortener (URLShortener):

View File

@ -1,6 +1,7 @@
from __future__ import absolute_import
import urllib
from url_shortener import URLShortener
from .url_shortener import URLShortener
class HKCShortener (URLShortener):
def __init__ (self, *args, **kwargs):

View File

@ -1,6 +1,7 @@
from __future__ import absolute_import
import urllib
from url_shortener import URLShortener
from .url_shortener import URLShortener
class IsgdShortener (URLShortener):

View File

@ -1,6 +1,7 @@
from __future__ import absolute_import
import urllib
from url_shortener import URLShortener
from .url_shortener import URLShortener
class OnjmeShortener (URLShortener):
def __init__ (self, *args, **kwargs):

View File

@ -1,6 +1,7 @@
from __future__ import absolute_import
import urllib
from url_shortener import URLShortener
from .url_shortener import URLShortener
class TinyArrowsShortener (URLShortener):
def __init__ (self, *args, **kwargs):

View File

@ -1,4 +1,5 @@
from url_shortener import URLShortener
from __future__ import absolute_import
from .url_shortener import URLShortener
import urllib
class TinyurlShortener (URLShortener):
def __init__(self, *args, **kwargs):

View File

@ -24,7 +24,7 @@ class URLShortener (object):
def unshorten(self, url):
working = urlparse(url)
if not working.netloc:
raise TypeError, "Unable to parse URL."
raise TypeError("Unable to parse URL.")
con = HTTPConnection(working.netloc)
con.connect()
con.request('GET', working.path)

View File

@ -1,6 +1,7 @@
from __future__ import absolute_import
import urllib
from url_shortener import URLShortener
from .url_shortener import URLShortener
class XedccShortener (URLShortener):
def __init__ (self, *args, **kwargs):

View File

@ -1,5 +1,6 @@
from __future__ import absolute_import
import platform
if platform.system() == "Windows":
from wxUtils import *
from .wxUtils import *
#elif platform.system() == "Linux":
# from gtkUtils import *

View File

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
from base import basePanel
from dm import dmPanel
from events import eventsPanel
from favourites import favsPanel
from lists import listPanel
from panels import accountPanel, emptyPanel
from people import peoplePanel
from trends import trendsPanel
from tweet_searches import searchPanel
from user_searches import searchUsersPanel
from __future__ import absolute_import
from .base import basePanel
from .dm import dmPanel
from .events import eventsPanel
from .favourites import favsPanel
from .lists import listPanel
from .panels import accountPanel, emptyPanel
from .people import peoplePanel
from .trends import trendsPanel
from .tweet_searches import searchPanel
from .user_searches import searchUsersPanel

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from base import basePanel
from .base import basePanel
class dmPanel(basePanel):
def __init__(self, parent, name):

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from base import basePanel
from .base import basePanel
class favsPanel(basePanel):
def __init__(self, parent, name):

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from base import basePanel
from .base import basePanel
class listPanel(basePanel):
def __init__(self, parent, name):

View File

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from multiplatform_widgets import widgets
from base import basePanel
from .base import basePanel
class peoplePanel(basePanel):
""" Buffer used to show people."""

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from base import basePanel
from .base import basePanel
class searchPanel(basePanel):
def __init__(self, parent, name):

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
from tweet_searches import searchPanel
from .tweet_searches import searchPanel
from multiplatform_widgets import widgets
class searchUsersPanel(searchPanel):

View File

@ -1 +1,2 @@
import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils
from __future__ import absolute_import
from . import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils

View File

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
import baseDialog
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import baseDialog
import wx
import logging as original_logger
import application

View File

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
import baseDialog
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import baseDialog
import wx
class findDialog(baseDialog.BaseWXDialog):

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import widgetUtils
import baseDialog
from . import baseDialog
import wx
from extra import translator

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
import baseDialog
from . import baseDialog
class showUserProfile(baseDialog.BaseWXDialog):
def __init__(self):

View File

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
import baseDialog
from __future__ import absolute_import
# -*- coding: utf-8 -*-
from . import baseDialog
import wx
class trendingTopicsDialog(baseDialog.BaseWXDialog):

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import wx
import baseDialog
from . import baseDialog
class updateProfileDialog(baseDialog.BaseWXDialog):
def __init__(self):

View File

@ -16,8 +16,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
############################################################
from __future__ import absolute_import
import wx
import baseDialog
from . import baseDialog
class selectUserDialog(baseDialog.BaseWXDialog):
def __init__(self, title, users):