mirror of
https://github.com/MCV-Software/TWBlue.git
synced 2025-07-17 21:56:07 -04:00
Core: Update menu bar items when switching between Twitter and Mastodon session to use terms according to the focused network.
This commit is contained in:
@@ -152,7 +152,7 @@ class Controller(object):
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.edit_keystrokes, menuitem=self.view.keystroke_editor)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_tweet, self.view.compose)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_reply, self.view.reply)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_retweet, self.view.retweet)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_retweet, self.view.share)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_to_favourites, self.view.fav)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_from_favourites, self.view.unfav)
|
||||
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_item, self.view.view)
|
||||
@@ -234,6 +234,8 @@ class Controller(object):
|
||||
self.accounts = []
|
||||
# This saves the current account (important in invisible mode)
|
||||
self.current_account = ""
|
||||
# this saves current menu bar layout.
|
||||
self.menubar_current_handler = ""
|
||||
# Handlers are special objects as they manage the mapping of available features and events in different social networks.
|
||||
self.handlers = dict()
|
||||
self.view.prepare()
|
||||
@@ -284,6 +286,9 @@ class Controller(object):
|
||||
self.started = True
|
||||
self.streams_checker_function = RepeatingTimer(60, self.check_streams)
|
||||
self.streams_checker_function.start()
|
||||
if len(self.accounts) > 0:
|
||||
b = self.get_first_buffer(self.accounts[0])
|
||||
self.update_menus(handler=self.get_handler(b.session.type))
|
||||
|
||||
def create_ignored_session_buffer(self, session):
|
||||
pub.sendMessage("core.create_account", name=session.get_name(), session_id=session.session_id)
|
||||
@@ -675,8 +680,15 @@ class Controller(object):
|
||||
|
||||
def buffer_changed(self, *args, **kwargs):
|
||||
buffer = self.get_current_buffer()
|
||||
if buffer.account != self.current_account:
|
||||
old_account = self.current_account
|
||||
new_account = buffer.account
|
||||
if new_account != old_account:
|
||||
self.current_account = buffer.account
|
||||
new_first_buffer = self.get_first_buffer(new_account)
|
||||
if new_first_buffer.session.type != self.menubar_current_handler:
|
||||
handler = self.get_handler(new_first_buffer.session.type)
|
||||
self.menubar_current_handler = new_first_buffer.session.type
|
||||
self.update_menus(handler)
|
||||
if not hasattr(buffer, "session") or buffer.session == None:
|
||||
return
|
||||
muted = autoread = False
|
||||
@@ -687,6 +699,17 @@ class Controller(object):
|
||||
self.view.check_menuitem("mute_buffer", muted)
|
||||
self.view.check_menuitem("autoread", autoread)
|
||||
|
||||
def update_menus(self, handler):
|
||||
if hasattr(handler, "menus"):
|
||||
for m in list(handler.menus.keys()):
|
||||
if hasattr(self.view, m):
|
||||
menu_item = getattr(self.view, m)
|
||||
if handler.menus[m] == None:
|
||||
menu_item.Enable(False)
|
||||
else:
|
||||
menu_item.Enable(True)
|
||||
menu_item.SetItemLabel(handler.menus[m])
|
||||
|
||||
def fix_wrong_buffer(self):
|
||||
buf = self.get_best_buffer()
|
||||
if buf == None:
|
||||
@@ -1207,7 +1230,7 @@ class Controller(object):
|
||||
self.notify(buffer.session, sound_to_play)
|
||||
|
||||
def toggle_share_settings(self, shareable=True):
|
||||
self.view.retweet.Enable(shareable)
|
||||
self.view.share.Enable(shareable)
|
||||
|
||||
def check_streams(self):
|
||||
if self.started == False:
|
||||
|
@@ -16,6 +16,40 @@ class Handler(object):
|
||||
|
||||
def __init__(self):
|
||||
super(Handler, self).__init__()
|
||||
# Structure to hold names for menu bar items.
|
||||
# empty names mean the item will be Disabled.
|
||||
self.menus = dict(
|
||||
# In application menu.
|
||||
updateProfile=None,
|
||||
menuitem_search=_("&Search"),
|
||||
lists=None,
|
||||
manageAliases=None,
|
||||
# In item menu.
|
||||
compose=_("&Post"),
|
||||
reply=_("Re&ply"),
|
||||
share=_("&Boost"),
|
||||
fav=_("&Add to favorites"),
|
||||
unfav=_("Remove from favorites"),
|
||||
view=_("&Show post"),
|
||||
view_coordinates=None,
|
||||
view_conversation=_("View conversa&tion"),
|
||||
ocr=None,
|
||||
delete=_("&Delete"),
|
||||
# In user menu.
|
||||
follow=_("&Actions..."),
|
||||
timeline=_("&View timeline..."),
|
||||
dm=_("Direct me&ssage"),
|
||||
addAlias=None,
|
||||
addToList=None,
|
||||
removeFromList=None,
|
||||
viewLists=None,
|
||||
details=None,
|
||||
favs=None,
|
||||
# In buffer Menu.
|
||||
trends=None,
|
||||
filter=None,
|
||||
manage_filters=None
|
||||
)
|
||||
|
||||
def create_buffers(self, session, createAccounts=True, controller=None):
|
||||
session.get_user_info()
|
||||
|
@@ -16,6 +16,40 @@ class Handler(object):
|
||||
|
||||
def __init__(self):
|
||||
super(Handler, self).__init__()
|
||||
# Structure to hold names for menu bar items.
|
||||
# empty names mean the item will be Disabled.
|
||||
self.menus = dict(
|
||||
# In application menu.
|
||||
updateProfile=_("&Update profile"),
|
||||
menuitem_search=_("&Search"),
|
||||
lists=_("&Lists manager"),
|
||||
manageAliases=_("Manage user aliases"),
|
||||
# In Item Menu.
|
||||
compose=_("&Tweet"),
|
||||
reply=_("Re&ply"),
|
||||
share=_("&Retweet"),
|
||||
fav=_("&Like"),
|
||||
unfav=_("&Unlike"),
|
||||
view=_("&Show tweet"),
|
||||
view_coordinates=_("View &address"),
|
||||
view_conversation=_("View conversa&tion"),
|
||||
ocr=_("Read text in picture"),
|
||||
delete=_("&Delete"),
|
||||
# In user menu.
|
||||
follow=_("&Actions..."),
|
||||
timeline=_("&View timeline..."),
|
||||
dm=_("Direct me&ssage"),
|
||||
addAlias=_("Add a&lias"),
|
||||
addToList=_("&Add to list"),
|
||||
removeFromList=_("R&emove from list"),
|
||||
viewLists=_("&View lists"),
|
||||
details=_("Show user &profile"),
|
||||
favs=_("View likes"),
|
||||
# In buffer menu.
|
||||
trends=_("New &trending topics buffer..."),
|
||||
filter=_("Create a &filter"),
|
||||
manage_filters=_("&Manage filters"),
|
||||
)
|
||||
|
||||
def create_buffers(self, session, createAccounts=True, controller=None):
|
||||
session.get_user_info()
|
||||
|
134
src/wxUI/view.py
134
src/wxUI/view.py
@@ -1,6 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
from builtins import range
|
||||
import wx
|
||||
import wx.adv
|
||||
import application
|
||||
@@ -11,88 +9,88 @@ class mainFrame(wx.Frame):
|
||||
### MENU
|
||||
def makeMenus(self):
|
||||
""" Creates, bind and returns the menu bar for the application. Also in this function, the accel table is created."""
|
||||
menuBar = wx.MenuBar()
|
||||
self.menubar = wx.MenuBar()
|
||||
|
||||
# Application menu
|
||||
app = wx.Menu()
|
||||
self.manage_accounts = app.Append(wx.ID_ANY, _(u"&Manage accounts"))
|
||||
self.updateProfile = app.Append(wx.ID_ANY, _(u"&Update profile"))
|
||||
self.show_hide = app.Append(wx.ID_ANY, _(u"&Hide window"))
|
||||
self.menuitem_search = app.Append(wx.ID_ANY, _(u"&Search"))
|
||||
self.lists = app.Append(wx.ID_ANY, _(u"&Lists manager"))
|
||||
self.manageAliases = app.Append(wx.ID_ANY, _("Manage user aliases"))
|
||||
self.keystroke_editor = app.Append(wx.ID_ANY, _(u"&Edit keystrokes"))
|
||||
self.account_settings = app.Append(wx.ID_ANY, _(u"Account se&ttings"))
|
||||
self.prefs = app.Append(wx.ID_PREFERENCES, _(u"&Global settings"))
|
||||
self.close = app.Append(wx.ID_EXIT, _(u"E&xit"))
|
||||
self.menubar_application = wx.Menu()
|
||||
self.manage_accounts = self.menubar_application.Append(wx.ID_ANY, _(u"&Manage accounts"))
|
||||
self.updateProfile = self.menubar_application.Append(wx.ID_ANY, _("&Update profile"))
|
||||
self.show_hide = self.menubar_application.Append(wx.ID_ANY, _(u"&Hide window"))
|
||||
self.menuitem_search = self.menubar_application.Append(wx.ID_ANY, _(u"&Search"))
|
||||
self.lists = self.menubar_application.Append(wx.ID_ANY, _(u"&Lists manager"))
|
||||
self.manageAliases = self.menubar_application.Append(wx.ID_ANY, _("Manage user aliases"))
|
||||
self.keystroke_editor = self.menubar_application.Append(wx.ID_ANY, _(u"&Edit keystrokes"))
|
||||
self.account_settings = self.menubar_application.Append(wx.ID_ANY, _(u"Account se&ttings"))
|
||||
self.prefs = self.menubar_application.Append(wx.ID_PREFERENCES, _(u"&Global settings"))
|
||||
self.close = self.menubar_application.Append(wx.ID_EXIT, _(u"E&xit"))
|
||||
|
||||
# Tweet menu
|
||||
tweet = wx.Menu()
|
||||
self.compose = tweet.Append(wx.ID_ANY, _(u"&Tweet"))
|
||||
self.reply = tweet.Append(wx.ID_ANY, _(u"Re&ply"))
|
||||
self.retweet = tweet.Append(wx.ID_ANY, _(u"&Retweet"))
|
||||
self.fav = tweet.Append(wx.ID_ANY, _(u"&Like"))
|
||||
self.unfav = tweet.Append(wx.ID_ANY, _(u"&Unlike"))
|
||||
self.view = tweet.Append(wx.ID_ANY, _(u"&Show tweet"))
|
||||
self.view_coordinates = tweet.Append(wx.ID_ANY, _(u"View &address"))
|
||||
self.view_conversation = tweet.Append(wx.ID_ANY, _(u"View conversa&tion"))
|
||||
self.ocr = tweet.Append(wx.ID_ANY, _(u"Read text in picture"))
|
||||
self.delete = tweet.Append(wx.ID_ANY, _(u"&Delete"))
|
||||
self.menubar_item = wx.Menu()
|
||||
self.compose = self.menubar_item.Append(wx.ID_ANY, _(u"&Tweet"))
|
||||
self.reply = self.menubar_item.Append(wx.ID_ANY, _(u"Re&ply"))
|
||||
self.share = self.menubar_item.Append(wx.ID_ANY, _(u"&Retweet"))
|
||||
self.fav = self.menubar_item.Append(wx.ID_ANY, _(u"&Like"))
|
||||
self.unfav = self.menubar_item.Append(wx.ID_ANY, _(u"&Unlike"))
|
||||
self.view = self.menubar_item.Append(wx.ID_ANY, _(u"&Show tweet"))
|
||||
self.view_coordinates = self.menubar_item.Append(wx.ID_ANY, _(u"View &address"))
|
||||
self.view_conversation = self.menubar_item.Append(wx.ID_ANY, _(u"View conversa&tion"))
|
||||
self.ocr = self.menubar_item.Append(wx.ID_ANY, _(u"Read text in picture"))
|
||||
self.delete = self.menubar_item.Append(wx.ID_ANY, _(u"&Delete"))
|
||||
|
||||
# User menu
|
||||
user = wx.Menu()
|
||||
self.follow = user.Append(wx.ID_ANY, _(u"&Actions..."))
|
||||
self.timeline = user.Append(wx.ID_ANY, _(u"&View timeline..."))
|
||||
self.dm = user.Append(wx.ID_ANY, _(u"Direct me&ssage"))
|
||||
self.addAlias = user.Append(wx.ID_ANY, _("Add a&lias"))
|
||||
self.addToList = user.Append(wx.ID_ANY, _(u"&Add to list"))
|
||||
self.removeFromList = user.Append(wx.ID_ANY, _(u"R&emove from list"))
|
||||
self.viewLists = user.Append(wx.ID_ANY, _(u"&View lists"))
|
||||
self.details = user.Append(wx.ID_ANY, _(u"Show user &profile"))
|
||||
self.favs = user.Append(wx.ID_ANY, _(u"V&iew likes"))
|
||||
self.menubar_user = wx.Menu()
|
||||
self.follow = self.menubar_user.Append(wx.ID_ANY, _(u"&Actions..."))
|
||||
self.timeline = self.menubar_user.Append(wx.ID_ANY, _(u"&View timeline..."))
|
||||
self.dm = self.menubar_user.Append(wx.ID_ANY, _(u"Direct me&ssage"))
|
||||
self.addAlias = self.menubar_user.Append(wx.ID_ANY, _("Add a&lias"))
|
||||
self.addToList = self.menubar_user.Append(wx.ID_ANY, _(u"&Add to list"))
|
||||
self.removeFromList = self.menubar_user.Append(wx.ID_ANY, _(u"R&emove from list"))
|
||||
self.viewLists = self.menubar_user.Append(wx.ID_ANY, _(u"&View lists"))
|
||||
self.details = self.menubar_user.Append(wx.ID_ANY, _(u"Show user &profile"))
|
||||
self.favs = self.menubar_user.Append(wx.ID_ANY, _(u"V&iew likes"))
|
||||
|
||||
# buffer menu
|
||||
buffer = wx.Menu()
|
||||
self.update_buffer = buffer.Append(wx.ID_ANY, _(u"&Update buffer"))
|
||||
self.trends = buffer.Append(wx.ID_ANY, _(u"New &trending topics buffer..."))
|
||||
self.filter = buffer.Append(wx.ID_ANY, _(u"Create a &filter"))
|
||||
self.manage_filters = buffer.Append(wx.ID_ANY, _(u"&Manage filters"))
|
||||
self.find = buffer.Append(wx.ID_ANY, _(u"Find a string in the currently focused buffer..."))
|
||||
self.load_previous_items = buffer.Append(wx.ID_ANY, _(u"&Load previous items"))
|
||||
buffer.AppendSeparator()
|
||||
self.mute_buffer = buffer.AppendCheckItem(wx.ID_ANY, _(u"&Mute"))
|
||||
self.autoread = buffer.AppendCheckItem(wx.ID_ANY, _(u"&Autoread"))
|
||||
self.clear = buffer.Append(wx.ID_ANY, _(u"&Clear buffer"))
|
||||
self.deleteTl = buffer.Append(wx.ID_ANY, _(u"&Destroy"))
|
||||
self.menubar_buffer = wx.Menu()
|
||||
self.update_buffer = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Update buffer"))
|
||||
self.trends = self.menubar_buffer.Append(wx.ID_ANY, _(u"New &trending topics buffer..."))
|
||||
self.filter = self.menubar_buffer.Append(wx.ID_ANY, _(u"Create a &filter"))
|
||||
self.manage_filters = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Manage filters"))
|
||||
self.find = self.menubar_buffer.Append(wx.ID_ANY, _(u"Find a string in the currently focused buffer..."))
|
||||
self.load_previous_items = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Load previous items"))
|
||||
self.menubar_buffer.AppendSeparator()
|
||||
self.mute_buffer = self.menubar_buffer.AppendCheckItem(wx.ID_ANY, _(u"&Mute"))
|
||||
self.autoread = self.menubar_buffer.AppendCheckItem(wx.ID_ANY, _(u"&Autoread"))
|
||||
self.clear = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Clear buffer"))
|
||||
self.deleteTl = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Destroy"))
|
||||
|
||||
# audio menu
|
||||
audio = wx.Menu()
|
||||
self.seekLeft = audio.Append(wx.ID_ANY, _(u"&Seek back 5 seconds"))
|
||||
self.seekRight = audio.Append(wx.ID_ANY, _(u"&Seek forward 5 seconds"))
|
||||
self.menubar_audio = wx.Menu()
|
||||
self.seekLeft = self.menubar_audio.Append(wx.ID_ANY, _(u"&Seek back 5 seconds"))
|
||||
self.seekRight = self.menubar_audio.Append(wx.ID_ANY, _(u"&Seek forward 5 seconds"))
|
||||
|
||||
# Help Menu
|
||||
help = wx.Menu()
|
||||
self.doc = help.Append(-1, _(u"&Documentation"))
|
||||
self.sounds_tutorial = help.Append(wx.ID_ANY, _(u"Sounds &tutorial"))
|
||||
self.changelog = help.Append(wx.ID_ANY, _(u"&What's new in this version?"))
|
||||
self.check_for_updates = help.Append(wx.ID_ANY, _(u"&Check for updates"))
|
||||
self.reportError = help.Append(wx.ID_ANY, _(u"&Report an error"))
|
||||
self.visit_website = help.Append(-1, _(u"{0}'s &website").format(application.name,))
|
||||
self.get_soundpacks = help.Append(-1, _(u"Get soundpacks for TWBlue"))
|
||||
self.about = help.Append(-1, _(u"About &{0}").format(application.name,))
|
||||
self.menubar_help = wx.Menu()
|
||||
self.doc = self.menubar_help.Append(-1, _(u"&Documentation"))
|
||||
self.sounds_tutorial = self.menubar_help.Append(wx.ID_ANY, _(u"Sounds &tutorial"))
|
||||
self.changelog = self.menubar_help.Append(wx.ID_ANY, _(u"&What's new in this version?"))
|
||||
self.check_for_updates = self.menubar_help.Append(wx.ID_ANY, _(u"&Check for updates"))
|
||||
self.reportError = self.menubar_help.Append(wx.ID_ANY, _(u"&Report an error"))
|
||||
self.visit_website = self.menubar_help.Append(-1, _(u"{0}'s &website").format(application.name,))
|
||||
self.get_soundpacks = self.menubar_help.Append(-1, _(u"Get soundpacks for TWBlue"))
|
||||
self.about = self.menubar_help.Append(-1, _(u"About &{0}").format(application.name,))
|
||||
|
||||
# Add all to the menu Bar
|
||||
menuBar.Append(app, _(u"&Application"))
|
||||
menuBar.Append(tweet, _(u"&Tweet"))
|
||||
menuBar.Append(user, _(u"&User"))
|
||||
menuBar.Append(buffer, _(u"&Buffer"))
|
||||
menuBar.Append(audio, _(u"&Audio"))
|
||||
menuBar.Append(help, _(u"&Help"))
|
||||
self.menubar.Append(self.menubar_application, _(u"&Application"))
|
||||
self.menubar.Append(self.menubar_item, _(u"&Item"))
|
||||
self.menubar.Append(self.menubar_user, _(u"&User"))
|
||||
self.menubar.Append(self.menubar_buffer, _(u"&Buffer"))
|
||||
self.menubar.Append(self.menubar_audio, _(u"&Audio"))
|
||||
self.menubar.Append(self.menubar_help, _(u"&Help"))
|
||||
|
||||
self.accel_tbl = wx.AcceleratorTable([
|
||||
(wx.ACCEL_CTRL, ord('N'), self.compose.GetId()),
|
||||
(wx.ACCEL_CTRL, ord('R'), self.reply.GetId()),
|
||||
(wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('R'), self.retweet.GetId()),
|
||||
(wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('R'), self.share.GetId()),
|
||||
(wx.ACCEL_CTRL, ord('F'), self.fav.GetId()),
|
||||
(wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('F'), self.unfav.GetId()),
|
||||
(wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('V'), self.view.GetId()),
|
||||
@@ -110,7 +108,6 @@ class mainFrame(wx.Frame):
|
||||
])
|
||||
|
||||
self.SetAcceleratorTable(self.accel_tbl)
|
||||
return menuBar
|
||||
|
||||
### MAIN
|
||||
def __init__(self):
|
||||
@@ -119,7 +116,8 @@ class mainFrame(wx.Frame):
|
||||
self.panel = wx.Panel(self)
|
||||
self.sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
self.SetTitle(application.name)
|
||||
self.SetMenuBar(self.makeMenus())
|
||||
self.makeMenus()
|
||||
self.SetMenuBar(self.menubar)
|
||||
self.nb = wx.Treebook(self.panel, wx.ID_ANY)
|
||||
self.buffers = {}
|
||||
|
||||
|
Reference in New Issue
Block a user