mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-07-17 21:56:07 -04:00
First great commit for Gtk. It is partially functional now
This commit is contained in:
@@ -1,17 +1,22 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import wx
|
||||
import platform
|
||||
if platform.system() == "Windows":
|
||||
import wx
|
||||
from wxUI import buffers, dialogs, commonMessageDialogs
|
||||
import user
|
||||
elif platform.system() == "Linux":
|
||||
from gi.repository import Gtk
|
||||
from gtkUI import buffers, dialogs, commonMessageDialogs
|
||||
import messages
|
||||
import widgetUtils
|
||||
import arrow
|
||||
import webbrowser
|
||||
import output
|
||||
import config
|
||||
import sound
|
||||
import messages
|
||||
import user
|
||||
import languageHandler
|
||||
import logging
|
||||
from twitter import compose, utils
|
||||
from wxUI import buffers, dialogs, commonMessageDialogs
|
||||
from mysc.thread_utils import call_threaded
|
||||
from twython import TwythonError
|
||||
from pubsub import pub
|
||||
@@ -127,6 +132,7 @@ class bufferController(object):
|
||||
call_threaded(self.session.api_call, call_name="update_status", status=text)
|
||||
else:
|
||||
call_threaded(self.session.api_call, call_name="update_status_with_media", status=text, media=tweet.image)
|
||||
if hasattr(tweet.message, "destroy"): tweet.message.destroy()
|
||||
|
||||
class accountPanel(bufferController):
|
||||
def __init__(self, parent, name, account, account_id):
|
||||
@@ -137,7 +143,6 @@ class accountPanel(bufferController):
|
||||
self.compose_function = None
|
||||
self.session = None
|
||||
self.needs_init = False
|
||||
self.id = self.buffer.GetId()
|
||||
self.account = account
|
||||
self.buffer.account = account
|
||||
self.name = name
|
||||
@@ -155,7 +160,7 @@ class accountPanel(bufferController):
|
||||
else:
|
||||
self.buffer.change_login(login=True)
|
||||
widgetUtils.connect_event(self.buffer.login, widgetUtils.BUTTON_PRESSED, self.login)
|
||||
|
||||
|
||||
def login(self, *args, **kwargs):
|
||||
del self.logged
|
||||
self.setup_account()
|
||||
@@ -181,7 +186,6 @@ class emptyPanel(bufferController):
|
||||
self.buffer = buffers.emptyPanel(parent, name)
|
||||
self.type = self.buffer.type
|
||||
self.compose_function = None
|
||||
self.id = self.buffer.GetId()
|
||||
self.account = account
|
||||
self.buffer.account = account
|
||||
self.name = name
|
||||
@@ -199,7 +203,6 @@ class baseBufferController(bufferController):
|
||||
self.invisible = True
|
||||
self.name = name
|
||||
self.type = self.buffer.type
|
||||
self.id = self.buffer.GetId()
|
||||
self.session = sessionObject
|
||||
self.compose_function = compose.compose_tweet
|
||||
log.debug("Compose_function: %s" % (self.compose_function,))
|
||||
@@ -302,8 +305,9 @@ class baseBufferController(bufferController):
|
||||
|
||||
def bind_events(self):
|
||||
log.debug("Binding events...")
|
||||
self.buffer.list.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, self.onFocus)
|
||||
self.buffer.list.list.Bind(wx.EVT_CHAR_HOOK, self.get_event)
|
||||
### disconnect this for wx
|
||||
# self.buffer.list.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, self.onFocus)
|
||||
# self.buffer.list.list.Bind(wx.EVT_CHAR_HOOK, self.get_event)
|
||||
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_tweet, self.buffer.tweet)
|
||||
# if self.type == "baseBuffer":
|
||||
widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.retweet, self.buffer.retweet)
|
||||
@@ -333,6 +337,7 @@ class baseBufferController(bufferController):
|
||||
call_threaded(self.session.api_call, call_name="update_status", _sound="reply_send.ogg", in_reply_to_status_id=id, status=message.message.get_text())
|
||||
else:
|
||||
call_threaded(self.session.api_call, call_name="update_status_with_media", _sound="reply_send.ogg", in_reply_to_status_id=id, status=message.message.get_text(), media=message.file)
|
||||
if hasattr(message.message, "destroy"): message.message.destroy()
|
||||
|
||||
@_tweets_exist
|
||||
def direct_message(self, *args, **kwargs):
|
||||
@@ -349,6 +354,7 @@ class baseBufferController(bufferController):
|
||||
dm = messages.dm(self.session, _(u"Direct message to %s") % (screen_name,), _(u"New direct message"), users)
|
||||
if dm.message.get_response() == widgetUtils.OK:
|
||||
call_threaded(self.session.api_call, call_name="send_direct_message", text=dm.message.get_text(), screen_name=dm.message.get("cb"))
|
||||
if hasattr(dm.message, "destroy"): dm.message.destroy()
|
||||
|
||||
@_tweets_exist
|
||||
def retweet(self, *args, **kwargs):
|
||||
@@ -362,6 +368,7 @@ class baseBufferController(bufferController):
|
||||
call_threaded(self.session.api_call, call_name="update_status", _sound="retweet_send.ogg", status=retweet.message.get_text(), in_reply_to_status_id=id)
|
||||
else:
|
||||
call_threaded(self.session.api_call, call_name="update_status", _sound="retweet_send.ogg", status=retweet.message.get_text(), in_reply_to_status_id=id, media=retweet.image)
|
||||
if hasattr(retweet.message, "destroy"): retweet.message.destroy()
|
||||
elif answer == widgetUtils.NO:
|
||||
call_threaded(self.session.api_call, call_name="retweet", _sound="retweet_send.ogg", id=id)
|
||||
|
||||
@@ -389,6 +396,7 @@ class baseBufferController(bufferController):
|
||||
urls_list.populate_list(urls)
|
||||
if urls_list.get_response() == widgetUtils.OK:
|
||||
sound.URLPlayer.play(urls_list.get_string(), self.session.settings["sound"]["volume"])
|
||||
if hasattr(urls_list, "destroy"): urls_list.destroy()
|
||||
|
||||
@_tweets_exist
|
||||
def url(self):
|
||||
@@ -403,6 +411,7 @@ class baseBufferController(bufferController):
|
||||
if urls_list.get_response() == widgetUtils.OK:
|
||||
output.speak(_(u"Opening URL..."))
|
||||
webbrowser.open_new_tab(urls_list.get_string())
|
||||
if hasattr(urls_list, "destroy"): urls_list.destroy()
|
||||
|
||||
def clear_list(self):
|
||||
dlg = commonMessageDialogs.clear_list()
|
||||
@@ -439,6 +448,7 @@ class baseBufferController(bufferController):
|
||||
dlg = dialogs.utils.selectUserDialog(title=_(u"User details"), users=users)
|
||||
if dlg.get_response() == widgetUtils.OK:
|
||||
user.profileController(session=self.session, user=dlg.get_user())
|
||||
if hasattr(dlg, "destroy"): dlg.destroy()
|
||||
|
||||
class eventsBufferController(bufferController):
|
||||
def __init__(self, parent, name, session, account, *args, **kwargs):
|
||||
@@ -448,7 +458,6 @@ class eventsBufferController(bufferController):
|
||||
self.buffer = buffers.eventsPanel(parent, name)
|
||||
self.name = name
|
||||
self.account = account
|
||||
self.id = self.buffer.GetId()
|
||||
self.buffer.account = self.account
|
||||
self.compose_function = compose.compose_event
|
||||
self.session = session
|
||||
@@ -503,6 +512,7 @@ class peopleBufferController(baseBufferController):
|
||||
call_threaded(self.session.api_call, call_name="update_status", _sound="reply_send.ogg", status=message.message.get_text())
|
||||
else:
|
||||
call_threaded(self.session.api_call, call_name="update_status_with_media", _sound="reply_send.ogg", status=message.message.get_text(), media=message.file)
|
||||
if hasattr(message.message, "destroy"): message.message.destroy()
|
||||
|
||||
def start_stream(self):
|
||||
log.debug("Starting stream for %s buffer, %s account" % (self.name, self.account,))
|
||||
|
@@ -1,13 +1,25 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import platform
|
||||
system = platform.system()
|
||||
import application
|
||||
from wxUI import (view, dialogs, commonMessageDialogs, sysTrayIcon)
|
||||
if system == "Windows":
|
||||
from update import updater
|
||||
from wxUI import (view, dialogs, commonMessageDialogs, sysTrayIcon)
|
||||
import settings
|
||||
from extra import SoundsTutorial
|
||||
import keystrokeEditor
|
||||
from keyboard_handler.wx_handler import WXKeyboardHandler
|
||||
import userActionsController
|
||||
import trendingTopics
|
||||
import user
|
||||
from issueReporter import issueReporter
|
||||
elif system == "Linux":
|
||||
from gtkUI import (view,)
|
||||
from twitter import utils
|
||||
from sessionmanager import manager, sessionManager
|
||||
|
||||
from update import updater
|
||||
import buffersController
|
||||
import messages
|
||||
import settings
|
||||
from sessionmanager import session as session_
|
||||
from pubsub import pub
|
||||
import sound
|
||||
@@ -20,18 +32,9 @@ import config
|
||||
import widgetUtils
|
||||
import pygeocoder
|
||||
from pygeolib import GeocoderError
|
||||
import platform
|
||||
from extra import SoundsTutorial
|
||||
import logging
|
||||
if platform.system() == "Windows":
|
||||
import keystrokeEditor
|
||||
from keyboard_handler.wx_handler import WXKeyboardHandler
|
||||
import userActionsController
|
||||
import trendingTopics
|
||||
import user
|
||||
import webbrowser
|
||||
from long_tweets import twishort
|
||||
from issueReporter import issueReporter
|
||||
|
||||
log = logging.getLogger("mainController")
|
||||
|
||||
@@ -199,11 +202,13 @@ class Controller(object):
|
||||
self.current_account = ""
|
||||
self.view.prepare()
|
||||
self.bind_stream_events()
|
||||
self.bind_other_events()
|
||||
self.set_systray_icon()
|
||||
if system == "Windows":
|
||||
self.bind_other_events()
|
||||
self.set_systray_icon()
|
||||
|
||||
def check_invisible_at_startup(self):
|
||||
# Visibility check
|
||||
# Visibility check. It does only work for windows.
|
||||
if system != "Windows": return
|
||||
if config.app["app-settings"]["hide_gui"] == True:
|
||||
self.show_hide()
|
||||
self.view.Show()
|
||||
@@ -484,6 +489,7 @@ class Controller(object):
|
||||
if hasattr(session_.sessions[item], "main_stream"): session_.sessions[item].main_stream.disconnect()
|
||||
if hasattr(session_.sessions[item], "timelinesStream"): session_.sessions[item].timelinesStream.disconnect()
|
||||
session_.sessions[item].sound.cleaner.cancel()
|
||||
if system == "Windows":
|
||||
self.systrayIcon.RemoveIcon()
|
||||
widgetUtils.exit_application()
|
||||
|
||||
@@ -1200,4 +1206,4 @@ class Controller(object):
|
||||
output.speak(_(u"Buffer mute off"))
|
||||
|
||||
def __del__(self):
|
||||
config.app.write()
|
||||
config.app.write()
|
||||
|
@@ -1,12 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import platform
|
||||
system = platform.system()
|
||||
import widgetUtils
|
||||
import output
|
||||
import url_shortener
|
||||
import sound
|
||||
from pubsub import pub
|
||||
from wxUI.dialogs import message, urlList
|
||||
from extra import translator, SpellChecker, autocompletionUsers
|
||||
from extra.AudioUploader import audioUploader
|
||||
if system == "Windows":
|
||||
from wxUI.dialogs import message, urlList
|
||||
from extra import translator, SpellChecker, autocompletionUsers
|
||||
from extra.AudioUploader import audioUploader
|
||||
elif system == "Linux":
|
||||
from gtkUI.dialogs import message
|
||||
from twitter import utils
|
||||
|
||||
class basicTweet(object):
|
||||
@@ -18,11 +23,12 @@ class basicTweet(object):
|
||||
self.message = getattr(message, messageType)(title, caption, text)
|
||||
widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck)
|
||||
widgetUtils.connect_event(self.message.attach, widgetUtils.BUTTON_PRESSED, self.attach)
|
||||
# if system == "Windows":
|
||||
widgetUtils.connect_event(self.message.text, widgetUtils.ENTERED_TEXT, self.text_processor)
|
||||
self.text_processor()
|
||||
widgetUtils.connect_event(self.message.shortenButton, widgetUtils.BUTTON_PRESSED, self.shorten)
|
||||
widgetUtils.connect_event(self.message.unshortenButton, widgetUtils.BUTTON_PRESSED, self.unshorten)
|
||||
widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate)
|
||||
self.text_processor()
|
||||
|
||||
def translate(self, event=None):
|
||||
dlg = translator.gui.translateDialog()
|
||||
@@ -171,4 +177,4 @@ class viewTweet(basicTweet):
|
||||
def contain_urls(self):
|
||||
if len(utils.find_urls_in_text(self.message.get_text())) > 0:
|
||||
return True
|
||||
return False
|
||||
return False
|
||||
|
Reference in New Issue
Block a user