mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2024-11-26 12:53:12 -06:00
Added basic toot viewing (untested yet)
This commit is contained in:
parent
3deffa57de
commit
2a10f029f0
@ -458,7 +458,7 @@ class BaseBuffer(base.Buffer):
|
|||||||
def view_item(self):
|
def view_item(self):
|
||||||
toot = self.get_item()
|
toot = self.get_item()
|
||||||
print(toot)
|
print(toot)
|
||||||
pass
|
msg = messages.viewToot(toot, offset_hours=self.session.db["utc_offset"], item_url=self.get_item_url())
|
||||||
|
|
||||||
def ocr_image(self):
|
def ocr_image(self):
|
||||||
toot = self.get_item()
|
toot = self.get_item()
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import widgetUtils
|
import widgetUtils
|
||||||
import config
|
import config
|
||||||
|
import output
|
||||||
from controller.twitter import messages
|
from controller.twitter import messages
|
||||||
|
from sessions.mastodon import templates
|
||||||
|
from wxUI.dialogs.mastodon import tootDialogs
|
||||||
|
|
||||||
class toot(messages.tweet):
|
class toot(messages.tweet):
|
||||||
def __init__(self, max=500, *args, **kwargs):
|
def __init__(self, max=500, *args, **kwargs):
|
||||||
@ -47,3 +50,42 @@ class reply(toot):
|
|||||||
if self.message.checkboxes[i].GetValue() == True:
|
if self.message.checkboxes[i].GetValue() == True:
|
||||||
people = people + "{0} ".format(self.message.checkboxes[i].GetLabel(),)
|
people = people + "{0} ".format(self.message.checkboxes[i].GetLabel(),)
|
||||||
return people
|
return people
|
||||||
|
|
||||||
|
class viewToot(toot):
|
||||||
|
def __init__(self, toot, offset_hours=0, date="", item_url=""):
|
||||||
|
if toot.reblog != None:
|
||||||
|
toot = toot.reblog
|
||||||
|
author = toot.account.display_name if toot.account.display_name != "" else toot.account.username
|
||||||
|
title = _(u"Toot from {}").format(author)
|
||||||
|
image_description = templates.process_image_descriptions(toot.media_attachments)
|
||||||
|
text = templates.process_text(toot, safe=False)
|
||||||
|
date = templates.process_date(toot.created_at, relative_times=False, offset_hours=offset_hours)
|
||||||
|
boost_count = str(toot.reblogs_count)
|
||||||
|
favs_count = str(toot.favourites_count)
|
||||||
|
# Gets the client from where this toot was made.
|
||||||
|
source_obj = toot.get("application")
|
||||||
|
if source_obj == None:
|
||||||
|
source = _("Remote instance")
|
||||||
|
else:
|
||||||
|
source = source_obj.get("name")
|
||||||
|
self.message = tootDialogs.viewToot(text=text, boosts_count=boost_count, favs_count=favs_count, source=source, date=date)
|
||||||
|
self.message.SetTitle(title)
|
||||||
|
if image_description != "":
|
||||||
|
self.message.image_description.Enable(True)
|
||||||
|
self.message.image_description.ChangeValue(image_description)
|
||||||
|
widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck)
|
||||||
|
if item_url != "":
|
||||||
|
self.message.enable_button("share")
|
||||||
|
widgetUtils.connect_event(self.message.share, widgetUtils.BUTTON_PRESSED, self.share)
|
||||||
|
self.item_url = item_url
|
||||||
|
widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate)
|
||||||
|
self.message.ShowModal()
|
||||||
|
|
||||||
|
# We won't need text_processor in this dialog, so let's avoid it.
|
||||||
|
def text_processor(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def share(self, *args, **kwargs):
|
||||||
|
if hasattr(self, "item_url"):
|
||||||
|
output.copy(self.item_url)
|
||||||
|
output.speak(_("Link copied to clipboard."))
|
93
src/wxUI/dialogs/mastodon/tootDialogs.py
Normal file
93
src/wxUI/dialogs/mastodon/tootDialogs.py
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
""" GUI dialogs for tweet writing and displaying. """
|
||||||
|
import wx
|
||||||
|
|
||||||
|
class viewToot(wx.Dialog):
|
||||||
|
def set_title(self, lenght):
|
||||||
|
self.SetTitle(_("Toot - %i characters ") % (lenght,))
|
||||||
|
|
||||||
|
def __init__(self, text="", boosts_count=0, favs_count=0, source="", date="", privacy="", *args, **kwargs):
|
||||||
|
super(viewToot, self).__init__(parent=None, id=wx.ID_ANY, size=(850,850))
|
||||||
|
panel = wx.Panel(self)
|
||||||
|
label = wx.StaticText(panel, -1, _("Toot"))
|
||||||
|
self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
||||||
|
self.text.SetFocus()
|
||||||
|
textBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
textBox.Add(label, 0, wx.ALL, 5)
|
||||||
|
textBox.Add(self.text, 1, wx.EXPAND, 5)
|
||||||
|
mainBox = wx.BoxSizer(wx.VERTICAL)
|
||||||
|
mainBox.Add(textBox, 0, wx.ALL, 5)
|
||||||
|
label2 = wx.StaticText(panel, -1, _("Image description"))
|
||||||
|
self.image_description = wx.TextCtrl(panel, -1, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180))
|
||||||
|
self.image_description.Enable(False)
|
||||||
|
iBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
iBox.Add(label2, 0, wx.ALL, 5)
|
||||||
|
iBox.Add(self.image_description, 1, wx.EXPAND, 5)
|
||||||
|
mainBox.Add(iBox, 0, wx.ALL, 5)
|
||||||
|
privacyLabel = wx.StaticText(panel, -1, _("Privacy"))
|
||||||
|
privacy = wx.TextCtrl(panel, -1, privacy, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
|
privacyBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
privacyBox.Add(privacyLabel, 0, wx.ALL, 5)
|
||||||
|
privacyBox.Add(privacy, 0, wx.ALL, 5)
|
||||||
|
boostsCountLabel = wx.StaticText(panel, -1, _(u"Boosts: "))
|
||||||
|
boostsCount = wx.TextCtrl(panel, -1, str(boosts_count), size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
|
boostBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
boostBox.Add(boostsCountLabel, 0, wx.ALL, 5)
|
||||||
|
boostBox.Add(boostsCount, 0, wx.ALL, 5)
|
||||||
|
favsCountLabel = wx.StaticText(panel, -1, _("Favorites: "))
|
||||||
|
favsCount = wx.TextCtrl(panel, -1, str(favs_count), size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
|
favsBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
favsBox.Add(favsCountLabel, 0, wx.ALL, 5)
|
||||||
|
favsBox.Add(favsCount, 0, wx.ALL, 5)
|
||||||
|
sourceLabel = wx.StaticText(panel, -1, _("Source: "))
|
||||||
|
source = wx.TextCtrl(panel, -1, source, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
|
sourceBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
sourceBox.Add(sourceLabel, 0, wx.ALL, 5)
|
||||||
|
sourceBox.Add(source, 0, wx.ALL, 5)
|
||||||
|
dateLabel = wx.StaticText(panel, -1, _(u"Date: "))
|
||||||
|
date = wx.TextCtrl(panel, -1, date, size=wx.DefaultSize, style=wx.TE_READONLY|wx.TE_MULTILINE)
|
||||||
|
dateBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
dateBox.Add(dateLabel, 0, wx.ALL, 5)
|
||||||
|
dateBox.Add(date, 0, wx.ALL, 5)
|
||||||
|
infoBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
infoBox.Add(privacyBox, 0, wx.ALL, 5)
|
||||||
|
infoBox.Add(boostBox, 0, wx.ALL, 5)
|
||||||
|
infoBox.Add(favsBox, 0, wx.ALL, 5)
|
||||||
|
infoBox.Add(sourceBox, 0, wx.ALL, 5)
|
||||||
|
mainBox.Add(infoBox, 0, wx.ALL, 5)
|
||||||
|
mainBox.Add(dateBox, 0, wx.ALL, 5)
|
||||||
|
self.share = wx.Button(panel, wx.ID_ANY, _("Copy link to clipboard"))
|
||||||
|
self.share.Enable(False)
|
||||||
|
self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize)
|
||||||
|
self.translateButton = wx.Button(panel, -1, _(u"&Translate..."), size=wx.DefaultSize)
|
||||||
|
cancelButton = wx.Button(panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize)
|
||||||
|
cancelButton.SetDefault()
|
||||||
|
buttonsBox = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
buttonsBox.Add(self.share, 0, wx.ALL, 5)
|
||||||
|
buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5)
|
||||||
|
buttonsBox.Add(self.translateButton, 0, wx.ALL, 5)
|
||||||
|
buttonsBox.Add(cancelButton, 0, wx.ALL, 5)
|
||||||
|
mainBox.Add(buttonsBox, 0, wx.ALL, 5)
|
||||||
|
selectId = wx.ID_ANY
|
||||||
|
self.Bind(wx.EVT_MENU, self.onSelect, id=selectId)
|
||||||
|
self.accel_tbl = wx.AcceleratorTable([
|
||||||
|
(wx.ACCEL_CTRL, ord('A'), selectId),
|
||||||
|
])
|
||||||
|
self.SetAcceleratorTable(self.accel_tbl)
|
||||||
|
panel.SetSizer(mainBox)
|
||||||
|
self.SetClientSize(mainBox.CalcMin())
|
||||||
|
|
||||||
|
def set_text(self, text):
|
||||||
|
self.text.ChangeValue(text)
|
||||||
|
|
||||||
|
def get_text(self):
|
||||||
|
return self.text.GetValue()
|
||||||
|
|
||||||
|
def text_focus(self):
|
||||||
|
self.text.SetFocus()
|
||||||
|
|
||||||
|
def onSelect(self, ev):
|
||||||
|
self.text.SelectAll()
|
||||||
|
|
||||||
|
def enable_button(self, buttonName):
|
||||||
|
if hasattr(self, buttonName):
|
||||||
|
return getattr(self, buttonName).Enable()
|
Loading…
Reference in New Issue
Block a user