mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-07-17 21:56:07 -04:00
Merge branch 'next-gen' of https://github.com/manuelcortez/twblue into next-gen
This commit is contained in:
@@ -8,6 +8,7 @@ language = string(default="system")
|
||||
hide_gui = boolean(default=False)
|
||||
voice_enabled = boolean(default=False)
|
||||
ask_at_exit = boolean(default=True)
|
||||
autostart = boolean(default=False)
|
||||
handle_longtweets = boolean(default=True)
|
||||
use_invisible_keyboard_shorcuts = boolean(default=True)
|
||||
play_ready_sound = boolean(default=True)
|
||||
|
@@ -2,7 +2,7 @@
|
||||
name = 'TWBlue'
|
||||
snapshot = False
|
||||
if snapshot == False:
|
||||
version = "0.84"
|
||||
version = "0.85"
|
||||
update_url = 'http://twblue.es/updates/twblue_ngen.json'
|
||||
mirror_update_url = 'https://raw.githubusercontent.com/manuelcortez/TWBlue/next-gen/updates/stable.json'
|
||||
else:
|
||||
|
@@ -364,7 +364,7 @@ class baseBufferController(bufferController):
|
||||
self.remove_item(i)
|
||||
|
||||
def put_items_on_list(self, number_of_items):
|
||||
if number_of_items == 0: return
|
||||
if number_of_items == 0 and self.session.settings["general"]["persist_size"] == 0: return
|
||||
log.debug("The list contains %d items " % (self.buffer.list.get_count(),))
|
||||
log.debug("Putting %d items on the list" % (number_of_items,))
|
||||
if self.buffer.list.get_count() == 0:
|
||||
@@ -372,7 +372,7 @@ class baseBufferController(bufferController):
|
||||
tweet = self.compose_function(i, self.session.db, self.session.settings["general"]["relative_times"])
|
||||
self.buffer.list.insert_item(False, *tweet)
|
||||
self.buffer.set_position(self.session.settings["general"]["reverse_timelines"])
|
||||
elif self.buffer.list.get_count() > 0:
|
||||
elif self.buffer.list.get_count() > 0 and number_of_items > 0:
|
||||
if self.session.settings["general"]["reverse_timelines"] == False:
|
||||
items = self.session.db[self.name][len(self.session.db[self.name])-number_of_items:]
|
||||
for i in items:
|
||||
|
@@ -249,6 +249,8 @@ class Controller(object):
|
||||
# Connection checker executed each minute.
|
||||
self.checker_function = RepeatingTimer(60, self.check_connection)
|
||||
self.checker_function.start()
|
||||
self.save_db = RepeatingTimer(300, self.save_data_in_db)
|
||||
self.save_db.start()
|
||||
|
||||
def start(self):
|
||||
""" Starts all buffer objects. Loads their items."""
|
||||
@@ -355,7 +357,7 @@ class Controller(object):
|
||||
for i in session.settings["other_buffers"]["followers_timelines"]:
|
||||
tl = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "%s-followers" % (i,), session, session.db["user_name"], screen_name=i)
|
||||
self.buffers.append(tl)
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"Followers for {}").format(i,), pos=self.view.search("favs_timelines", session.db["user_name"]))
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"Followers for {}").format(i,), pos=self.view.search("followers_timelines", session.db["user_name"]))
|
||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||
tl.timer.start()
|
||||
friends_timelines = buffersController.emptyPanel(self.view.nb, "friends_timelines", session.db["user_name"])
|
||||
@@ -364,7 +366,7 @@ class Controller(object):
|
||||
for i in session.settings["other_buffers"]["friends_timelines"]:
|
||||
tl = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "%s-friends" % (i,), session, session.db["user_name"], screen_name=i)
|
||||
self.buffers.append(tl)
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"Friends for {}").format(i,), pos=self.view.search("favs_timelines", session.db["user_name"]))
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"Friends for {}").format(i,), pos=self.view.search("friends_timelines", session.db["user_name"]))
|
||||
tl.timer = RepeatingTimer(300, tl.start_stream)
|
||||
tl.timer.start()
|
||||
lists = buffersController.emptyPanel(self.view.nb, "lists", session.db["user_name"])
|
||||
@@ -374,7 +376,7 @@ class Controller(object):
|
||||
tl = buffersController.listBufferController(self.view.nb, "get_list_statuses", "%s-list" % (i,), session, session.db["user_name"], bufferType=None, list_id=utils.find_list(i, session.db["lists"]))
|
||||
session.lists.append(tl)
|
||||
self.buffers.append(tl)
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"List for {}").format(i), pos=self.view.search("timelines", session.db["user_name"]))
|
||||
self.view.insert_buffer(tl.buffer, name=_(u"List for {}").format(i), pos=self.view.search("lists", session.db["user_name"]))
|
||||
searches = buffersController.emptyPanel(self.view.nb, "searches", session.db["user_name"])
|
||||
self.buffers.append(searches)
|
||||
self.view.insert_buffer(searches.buffer , name=_(u"Searches"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
||||
@@ -1494,4 +1496,8 @@ class Controller(object):
|
||||
id = data["delete"]["status"]["id"]
|
||||
for i in self.buffers:
|
||||
if hasattr(i, "remove_tweet") and hasattr(i, "name"):
|
||||
i.remove_tweet(id)
|
||||
i.remove_tweet(id)
|
||||
|
||||
def save_data_in_db(self):
|
||||
for i in session_.sessions:
|
||||
session_.sessions[i].shelve()
|
@@ -1,7 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import webbrowser
|
||||
#import pocket
|
||||
import sound_lib
|
||||
import paths
|
||||
import widgetUtils
|
||||
@@ -15,10 +14,10 @@ from extra.autocompletionUsers import settings
|
||||
from pubsub import pub
|
||||
import logging
|
||||
import config_utils
|
||||
#from pocket_utils import authorisationHandler
|
||||
import BaseHTTPServer
|
||||
log = logging.getLogger("Settings")
|
||||
import keys
|
||||
from collections import OrderedDict
|
||||
from platform_utils.autostart import windows as autostart_windows
|
||||
|
||||
class globalSettingsController(object):
|
||||
def __init__(self):
|
||||
@@ -56,8 +55,11 @@ class globalSettingsController(object):
|
||||
self.dialog.create_general(langs,self.kmfriendlies)
|
||||
self.dialog.general.language.SetSelection(id)
|
||||
self.dialog.general.km.SetSelection(self.kmid)
|
||||
if paths.mode == "installed":
|
||||
self.dialog.set_value("general", "autostart", config.app["app-settings"]["autostart"])
|
||||
else:
|
||||
self.dialog.general.autostart.Enable(False)
|
||||
self.dialog.set_value("general", "ask_at_exit", config.app["app-settings"]["ask_at_exit"])
|
||||
|
||||
self.dialog.set_value("general", "play_ready_sound", config.app["app-settings"]["play_ready_sound"])
|
||||
self.dialog.set_value("general", "speak_ready_msg", config.app["app-settings"]["speak_ready_msg"])
|
||||
self.dialog.set_value("general", "handle_longtweets", config.app["app-settings"]["handle_longtweets"])
|
||||
@@ -85,6 +87,9 @@ class globalSettingsController(object):
|
||||
kmFile.close()
|
||||
self.needs_restart = True
|
||||
|
||||
if config.app["app-settings"]["autostart"] != self.dialog.get_value("general", "autostart") and paths.mode == "installed":
|
||||
config.app["app-settings"]["autostart"] = self.dialog.get_value("general", "autostart")
|
||||
autostart_windows.setAutoStart(application.name, enable=self.dialog.get_value("general", "autostart"))
|
||||
if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] != self.dialog.get_value("general", "use_invisible_shorcuts"):
|
||||
config.app["app-settings"]["use_invisible_keyboard_shorcuts"] = self.dialog.get_value("general", "use_invisible_shorcuts")
|
||||
pub.sendMessage("invisible-shorcuts-changed", registered=self.dialog.get_value("general", "use_invisible_shorcuts"))
|
||||
@@ -248,14 +253,25 @@ class accountSettingsController(globalSettingsController):
|
||||
self.dialog.ignored_clients.remove_(id)
|
||||
|
||||
def get_buffers_list(self):
|
||||
all_buffers = ['home','mentions','dm','sent_dm','sent_tweets','favorites','followers','friends','blocks','muted','events']
|
||||
all_buffers=OrderedDict()
|
||||
all_buffers['home']=_(u"Home")
|
||||
all_buffers['mentions']=_(u"Mentions")
|
||||
all_buffers['dm']=_(u"Direct Messages")
|
||||
all_buffers['sent_dm']=_(u"Sent direct messages")
|
||||
all_buffers['sent_tweets']=_(u"Sent tweets")
|
||||
all_buffers['favorites']=_(u"Likes")
|
||||
all_buffers['followers']=_(u"Followers")
|
||||
all_buffers['friends']=_(u"Friends")
|
||||
all_buffers['blocks']=_(u"Blocked users")
|
||||
all_buffers['muted']=_(u"Muted users")
|
||||
all_buffers['events']=_(u"Events")
|
||||
list_buffers = []
|
||||
hidden_buffers=[]
|
||||
for i in all_buffers:
|
||||
for i in all_buffers.keys():
|
||||
if i in self.config["general"]["buffer_order"]:
|
||||
list_buffers.append((i, True))
|
||||
list_buffers.append((i, all_buffers[i], True))
|
||||
else:
|
||||
hidden_buffers.append((i, False))
|
||||
hidden_buffers.append((i, all_buffers[i], False))
|
||||
list_buffers.extend(hidden_buffers)
|
||||
return list_buffers
|
||||
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -31,11 +31,11 @@ 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()
|
||||
if getAutoStart(app_name) == enable:
|
||||
return
|
||||
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, RUN_REGKEY, 0, _winreg.KEY_WRITE)
|
||||
if enable:
|
||||
_winreg.SetValueEx(key, unicode(app_name), None, _winreg.REG_SZ, sys.argv[0])
|
||||
_winreg.SetValueEx(key, unicode(app_name), None, _winreg.REG_SZ, paths.get_executable())
|
||||
else:
|
||||
_winreg.DeleteValue(key, unicode(app_name))
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
""" The main session object. Here are the twitter functions to interact with the "model" of TWBlue."""
|
||||
import urllib2
|
||||
import config
|
||||
import twitter
|
||||
from keys import keyring
|
||||
import session_exceptions as Exceptions
|
||||
@@ -425,7 +426,7 @@ class Session(object):
|
||||
|
||||
def check_quoted_status(self, tweet):
|
||||
status = tweets.is_long(tweet)
|
||||
if status != False:
|
||||
if status != False and config.app["app-settings"]["handle_longtweets"]:
|
||||
tweet = self.get_quoted_tweet(tweet)
|
||||
return tweet
|
||||
|
||||
@@ -447,6 +448,6 @@ class Session(object):
|
||||
|
||||
def check_long_tweet(self, tweet):
|
||||
long = twishort.is_long(tweet)
|
||||
if long != False:
|
||||
if long != False and config.app["app-settings"]["handle_longtweets"]:
|
||||
tweet["message"] = twishort.get_full_text(long)
|
||||
return tweet
|
@@ -41,7 +41,6 @@ def get_architecture_files():
|
||||
("Microsoft.VC90.MFC", glob("../windows-dependencies/x64/Microsoft.VC90.MFC/*")),]
|
||||
|
||||
def get_data():
|
||||
import accessible_output2
|
||||
import sound_lib
|
||||
import enchant
|
||||
return [
|
||||
@@ -50,7 +49,8 @@ def get_data():
|
||||
("accessible_output2/lib", glob("accessible_output2/lib/*.dll")),
|
||||
("keys/lib", glob("keys/lib/*.dll")),
|
||||
("keymaps", glob("keymaps/*.keymap")),
|
||||
]+get_sounds()+get_locales()+get_documentation()+sound_lib.find_datafiles()+accessible_output2.find_datafiles()+enchant.utils.win32_data_files()+get_architecture_files()+wx_files()
|
||||
("share/enchant/myspell", glob("../windows-dependencies/dictionaries/*")),
|
||||
]+get_sounds()+get_locales()+get_documentation()+sound_lib.find_datafiles()+enchant.utils.win32_data_files()+get_architecture_files()+wx_files()
|
||||
|
||||
def get_documentation ():
|
||||
answer = [("documentation", ["documentation/license.txt"])]
|
||||
|
@@ -18,7 +18,9 @@ class general(wx.Panel, baseDialog.BaseWXDialog):
|
||||
langBox.Add(language, 0, wx.ALL, 5)
|
||||
langBox.Add(self.language, 0, wx.ALL, 5)
|
||||
sizer.Add(langBox, 0, wx.ALL, 5)
|
||||
self.autostart = wx.CheckBox(self, -1, _(u"Run {0} at Windows startup").format(application.name,))
|
||||
self.ask_at_exit = wx.CheckBox(self, -1, _(U"ask before exiting {0}").format(application.name,))
|
||||
sizer.Add(self.autostart, 0, wx.ALL, 5)
|
||||
sizer.Add(self.ask_at_exit, 0, wx.ALL, 5)
|
||||
self.play_ready_sound = wx.CheckBox(self, -1, _(U"Play a sound when {0} launches").format(application.name,))
|
||||
sizer.Add(self.play_ready_sound, 0, wx.ALL, 5)
|
||||
@@ -114,7 +116,7 @@ class other_buffers(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
super(other_buffers, self).__init__(parent)
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
self.buffers = widgets.list(self, _(u"Buffer"), _(u"Status"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT)
|
||||
self.buffers = widgets.list(self, _(u"Buffer"), _(u"Name"), _(u"Status"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT)
|
||||
sizer.Add(self.buffers.list, 0, wx.ALL, 5)
|
||||
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
self.toggle_state = wx.Button(self, -1, _(u"Show/hide"))
|
||||
@@ -128,10 +130,10 @@ class other_buffers(wx.Panel):
|
||||
|
||||
def insert_buffers(self, buffers):
|
||||
for i in buffers:
|
||||
if i[1] == True:
|
||||
self.buffers.insert_item(False, *[i[0], _(u"Show")])
|
||||
if i[2] == True:
|
||||
self.buffers.insert_item(False, *[i[0], i[1], _(u"Show")])
|
||||
else:
|
||||
self.buffers.insert_item(False, *[i[0], _(u"Hide")])
|
||||
self.buffers.insert_item(False, *[i[0], i[1], _(u"Hide")])
|
||||
|
||||
def connect_hook_func(self, func):
|
||||
self.buffers.list.Bind(wx.EVT_CHAR_HOOK, func)
|
||||
@@ -141,40 +143,48 @@ class other_buffers(wx.Panel):
|
||||
if current == -1:
|
||||
output.speak(_(u"Select a buffer first."), True)
|
||||
return False
|
||||
if self.buffers.get_text_column(current, 1) == _(u"Hide"):
|
||||
if self.buffers.get_text_column(current, 2) == _(u"Hide"):
|
||||
output.speak(_(u"The buffer is hidden, show it first."), True)
|
||||
return False
|
||||
if current <= 0:
|
||||
output.speak(_(u"The buffer is already at the top of the list."), True)
|
||||
return False
|
||||
current_text = self.buffers.get_text_column(self.buffers.get_selected(), 0)
|
||||
current_text_state = self.buffers.get_text_column(self.buffers.get_selected(), 1)
|
||||
current_name = self.buffers.get_text_column(self.buffers.get_selected(), 1)
|
||||
current_text_state = self.buffers.get_text_column(self.buffers.get_selected(), 2)
|
||||
text_above = self.buffers.get_text_column(self.buffers.get_selected()-1, 0)
|
||||
text_above_state = self.buffers.get_text_column(self.buffers.get_selected()-1, 1)
|
||||
name_above = self.buffers.get_text_column(self.buffers.get_selected()-1, 1)
|
||||
text_above_state = self.buffers.get_text_column(self.buffers.get_selected()-1, 2)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()-1, 0, current_text)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()-1, 1, current_text_state)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()-1, 1, current_name)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()-1, 2, current_text_state)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 0, text_above)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 1, text_above_state)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 1, name_above)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 2, text_above_state)
|
||||
|
||||
def move_down(self, *args, **kwargs):
|
||||
current = self.buffers.get_selected()
|
||||
if current == -1:
|
||||
output.speak(_(u"Select a buffer first."), True)
|
||||
return False
|
||||
if self.buffers.get_text_column(current, 1) == _(u"Hide"):
|
||||
if self.buffers.get_text_column(current, 2) == _(u"Hide"):
|
||||
output.speak(_(u"The buffer is hidden, show it first."), True)
|
||||
return False
|
||||
if current+1 >= self.buffers.get_count():
|
||||
output.speak(_(u"The buffer is already at the bottom of the list."), True)
|
||||
return False
|
||||
current_text = self.buffers.get_text_column(self.buffers.get_selected(), 0)
|
||||
current_text_state = self.buffers.get_text_column(self.buffers.get_selected(), 1)
|
||||
current_name = self.buffers.get_text_column(self.buffers.get_selected(), 1)
|
||||
current_text_state = self.buffers.get_text_column(self.buffers.get_selected(), 2)
|
||||
text_below = self.buffers.get_text_column(self.buffers.get_selected()+1, 0)
|
||||
text_below_state = self.buffers.get_text_column(self.buffers.get_selected()+1, 1)
|
||||
name_below = self.buffers.get_text_column(self.buffers.get_selected()+1, 1)
|
||||
text_below_state = self.buffers.get_text_column(self.buffers.get_selected()+1, 2)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()+1, 0, current_text)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()+1, 1, current_text_state)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()+1, 1, current_name)
|
||||
self.buffers.set_text_column(self.buffers.get_selected()+1, 2, current_text_state)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 0, text_below)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 1, text_below_state)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 1, name_below)
|
||||
self.buffers.set_text_column(self.buffers.get_selected(), 2, text_below_state)
|
||||
|
||||
def get_event(self, ev):
|
||||
if ev.GetKeyCode() == wx.WXK_SPACE:
|
||||
@@ -185,16 +195,16 @@ class other_buffers(wx.Panel):
|
||||
|
||||
def change_selected_item(self):
|
||||
current = self.buffers.get_selected()
|
||||
text = self.buffers.get_text_column(current, 1)
|
||||
text = self.buffers.get_text_column(current, 2)
|
||||
if text == _(u"Show"):
|
||||
self.buffers.set_text_column(current, 1, _(u"Hide"))
|
||||
self.buffers.set_text_column(current, 2, _(u"Hide"))
|
||||
else:
|
||||
self.buffers.set_text_column(current, 1, _(u"Show"))
|
||||
output.speak(self.buffers.get_text_column(current, 1),True)
|
||||
self.buffers.set_text_column(current, 2, _(u"Show"))
|
||||
output.speak(self.buffers.get_text_column(current, 2),True)
|
||||
def get_list(self):
|
||||
buffers_list = []
|
||||
for i in xrange(0, self.buffers.get_count()):
|
||||
if self.buffers.get_text_column(i, 1) == _(u"Show"):
|
||||
if self.buffers.get_text_column(i, 2) == _(u"Show"):
|
||||
buffers_list.append(self.buffers.get_text_column(i, 0))
|
||||
return buffers_list
|
||||
|
||||
|
Reference in New Issue
Block a user