M melon/browse/__init__.py => melon/browse/__init__.py +2 -2
@@ 32,8 32,8 @@ class BrowseScreen(Adw.NavigationPage):
)
for server in servers:
row = Adw.ActionRow()
- row.set_title(server["name"])
- row.set_subtitle(server["description"])
+ row.set_title(server["name"].replace("&", "&"))
+ row.set_subtitle(server["description"].replace("&", "&"))
icon = Adw.Avatar()
icon.set_custom_image(
Gdk.Texture.new_from_filename(server["logo_path"])
M melon/browse/channel.py => melon/browse/channel.py +2 -2
@@ 49,7 49,7 @@ class BrowseChannelScreen(Adw.NavigationPage):
if feed.id == feed_id:
feed_name = feed.name
break
- self.results.set_title(feed_name)
+ self.results.set_title(feed_name.replace("&", "&"))
spinner = Gtk.Spinner()
spinner.set_size_request(20, 20)
spinner.start()
@@ 79,7 79,7 @@ class BrowseChannelScreen(Adw.NavigationPage):
self.scrollview.set_child(self.box)
# update meta
- self.set_title(unidecode(self.channel.name))
+ self.set_title(unidecode(self.channel.name).replace("&", "&"))
self.about.set_title(unidecode(self.channel.name).replace("&", "&"))
self.about.set_description(unidecode(self.channel.bio).replace("&", "&"))
M melon/browse/playlist.py => melon/browse/playlist.py +5 -3
@@ 50,9 50,11 @@ class BrowsePlaylistScreen(Adw.NavigationPage):
# base layout
self.box = Adw.PreferencesPage()
self.about = Adw.PreferencesGroup()
- self.about.set_title(unidecode(self.playlist.title))
- self.about.set_description(unidecode(self.playlist.description))
- self.set_title(self.playlist.title)
+ self.about.set_title(unidecode(self.playlist.title).replace("&", "&"))
+ self.about.set_description(
+ unidecode(self.playlist.description).replace("&", "&")
+ )
+ self.set_title(self.playlist.title.replace("&", "&"))
self.results = None
self.scrollview.set_child(self.box)
M melon/browse/search.py => melon/browse/search.py +1 -1
@@ 41,7 41,7 @@ class GlobalSearchScreen(Adw.NavigationPage):
instance = get_server_instance(server)
results = instance.search(self.text, self.search_mode)
box = Adw.ExpanderRow()
- box.set_title(instance.name)
+ box.set_title(instance.name.replace("&", "&"))
box.set_subtitle(_("No results"))
count = len(results)
box.set_subtitle(
M melon/browse/server.py => melon/browse/server.py +2 -2
@@ 112,7 112,7 @@ class Search(ViewStackPage):
if self.query != "":
desc = _("Try using a different query")
self.query = ""
- self.results.set_description(desc)
+ self.results.set_description(desc.replace("&", "&"))
self.results.set_icon_name("weather-few-clouds-night-symbolic")
self.inner.append(self.results)
@@ 188,7 188,7 @@ class BrowseServerScreen(Adw.NavigationPage):
def __init__(self, id, window=None, *args, **kwargs):
super().__init__(*args, **kwargs)
server = get_servers_list()[id]
- self.set_title(server["name"])
+ self.set_title(server["name"].replace("&", "&"))
self.instance = get_server_instance(server)
# main stack view
M melon/import_providers/utils.py => melon/import_providers/utils.py +1 -1
@@ 7,7 7,7 @@ class ImportPicker(Gtk.FileDialog):
def __init__(self, provider: ImportProvider, *args, **kwargs):
super().__init__(*args, **kwargs)
- self.set_title(provider.picker_title)
+ self.set_title(provider.picker_title.replace("&", "&"))
self.set_modal(True)
self.provider = provider
M melon/importer.py => melon/importer.py +4 -4
@@ 40,13 40,13 @@ class ImporterScreen(Adw.NavigationPage):
if len(providers) == 0:
continue
group = Adw.PreferencesGroup()
- group.set_title(server["name"])
- group.set_description(server["description"])
+ group.set_title(server["name"].replace("&", "&"))
+ group.set_description(server["description"].replace("&", "&"))
for provider in providers:
count += 1
row = Adw.ActionRow()
- row.set_title(provider.title)
- row.set_subtitle(provider.description)
+ row.set_title(provider.title.replace("&", "&"))
+ row.set_subtitle(provider.description.replace("&", "&"))
row.add_suffix(Gtk.Image.new_from_icon_name("go-next-symbolic"))
row.set_activatable(True)
row.connect("activated", pass_me(self.do_import, provider))
M melon/player/__init__.py => melon/player/__init__.py +1 -1
@@ 21,7 21,7 @@ class PlayerScreen(Adw.NavigationPage):
Gtk.UriLauncher.new(uri=self.video.url).launch()
def display_info(self):
- self.set_title(self.video.title)
+ self.set_title(self.video.title.replace("&", "&"))
self.scrollview.set_child(self.box)
# video details
self.about = Adw.PreferencesGroup()
M melon/player/playlist.py => melon/player/playlist.py +4 -2
@@ 200,8 200,10 @@ class PlaylistPlayerScreen(PlayerScreen):
def display_control(self):
self.ctr_group = Adw.PreferencesGroup()
- self.ctr_group.set_title(self.playlist.inner.title)
- self.ctr_group.set_description(self.playlist.inner.description)
+ self.ctr_group.set_title(self.playlist.inner.title.replace("&", "&"))
+ self.ctr_group.set_description(
+ self.playlist.inner.description.replace("&", "&")
+ )
# if the video isn't the first
# show a previous button
M melon/playlist/__init__.py => melon/playlist/__init__.py +3 -3
@@ 43,7 43,7 @@ class LocalPlaylistScreen(Adw.NavigationPage):
def update(self):
playlist = self.playlist
- self.set_title(playlist.title)
+ self.set_title(playlist.title.replace("&", "&"))
self.header_bar = Adw.HeaderBar()
@@ 85,8 85,8 @@ class LocalPlaylistScreen(Adw.NavigationPage):
self.box = Adw.PreferencesPage()
# create data group
group = Adw.PreferencesGroup()
- group.set_title(unidecode(playlist.title))
- group.set_description(unidecode(playlist.description))
+ group.set_title(unidecode(playlist.title).replace("&", "&"))
+ group.set_description(unidecode(playlist.description).replace("&", "&"))
group.set_header_suffix(edit_button)
app_conf = get_app_settings()
self.box.add(group)
M melon/settings/__init__.py => melon/settings/__init__.py +2 -2
@@ 112,8 112,8 @@ class SettingsScreen(Adw.NavigationPage):
# generate preferencesgroups for every server
for server_id, server in get_servers_list().items():
group = Adw.PreferencesGroup()
- group.set_title(server["name"])
- group.set_description(server["description"])
+ group.set_title(server["name"].replace("&", "&"))
+ group.set_description(server["description"].replace("&", "&"))
instance = get_server_instance(server)
epref = Preference(
"server-enabled",
M melon/widgets/feeditem.py => melon/widgets/feeditem.py +1 -1
@@ 167,7 167,7 @@ class AdaptiveFeedItem(Adw.ActionRow):
# add predefined list before custom menu entries and add them
for dt in predefined + self.menuitems:
row = Adw.ActionRow()
- row.set_title(dt[0])
+ row.set_title(dt[0].replace("&", "&"))
row.set_activatable(True)
# run callback & close dialog on click
row.connect(
M melon/widgets/preferencerow.py => melon/widgets/preferencerow.py +14 -14
@@ 18,8 18,8 @@ class PreferenceRow:
if pref.type is PreferenceType.TOGGLE:
# implemented as Switch Row
self.widget = Adw.SwitchRow()
- self.widget.set_title(pref.name)
- self.widget.set_subtitle(pref.description)
+ self.widget.set_title(pref.name.replace("&", "&"))
+ self.widget.set_subtitle(pref.description.replace("&", "&"))
self.widget.set_active(pref.value)
self.widget.connect(
"notify::active",
@@ 28,8 28,8 @@ class PreferenceRow:
elif pref.type is PreferenceType.DROPDOWN:
# implemented as Combo Row
self.widget = Adw.ComboRow()
- self.widget.set_title(pref.name)
- self.widget.set_subtitle(pref.description)
+ self.widget.set_title(pref.name.replace("&", "&"))
+ self.widget.set_subtitle(pref.description.replace("&", "&"))
opts = pref.default
model = Gtk.StringList.new(opts)
self.widget.set_model(model)
@@ 45,7 45,7 @@ class PreferenceRow:
self.widget = Adw.EntryRow()
else:
self.widget = Adw.PasswordEntryRow()
- self.widget.set_title(pref.name)
+ self.widget.set_title(pref.name.replace("&", "&"))
self.widget.set_tooltip_text(pref.description)
self.widget.set_text(pref.value)
self.widget.connect(
@@ 55,8 55,8 @@ class PreferenceRow:
# implemented as Spin Row
# BUG: wont accept any input
self.widget = Adw.SpinRow()
- self.widget.set_title(pref.name)
- self.widget.set_subtitle(pref.description)
+ self.widget.set_title(pref.name.replace("&", "&"))
+ self.widget.set_subtitle(pref.description.replace("&", "&"))
self.current_value = float(pref.value)
self.widget.set_value(self.current_value)
self.widget.connect(
@@ 67,8 67,8 @@ class PreferenceRow:
self.widget.connect(lambda v: self.pass_to_callback(v))
elif pref.type is PreferenceType.HIDDEN:
self.widget = Adw.ActionRow()
- self.widget.set_title(pref.name)
- self.widget.set_subtitle(pref.description)
+ self.widget.set_title(pref.name.replace("&", "&"))
+ self.widget.set_subtitle(pref.description.replace("&", "&"))
reset_btn = IconButton(
"", "object-rotate-left-symbolic", tooltip=_("Reset value")
)
@@ 78,8 78,8 @@ class PreferenceRow:
else:
# shouldn't be reachable
self.widget = Adw.ActionRow()
- self.widget.set_title(pref.name)
- self.widget.set_subtitle(pref.description)
+ self.widget.set_title(pref.name.replace("&", "&"))
+ self.widget.set_subtitle(pref.description.replace("&", "&"))
def pass_to_callback(self, value):
if value == self.current_value:
@@ 124,15 124,15 @@ class MultiRow(Adw.PreferencesRow):
self.inner.set_margin_start(padding)
self.inner.set_margin_end(padding)
self.set_child(self.inner)
- self.inner.set_title(self.pref.name)
- self.inner.set_description(self.pref.description)
+ self.inner.set_title(self.pref.name.replace("&", "&"))
+ self.inner.set_description(self.pref.description.replace("&", "&"))
self.adder = IconButton(_("Add"), "list-add-symbolic")
self.adder.connect("clicked", lambda x: self.open_add())
self.inner.set_header_suffix(self.adder)
# create items list
for index, item in enumerate(self.values):
row = Adw.ActionRow()
- row.set_title(item)
+ row.set_title(item.replace("&", "&"))
drag_source = Gtk.DragSource()
drag_source.set_content(
Gdk.ContentProvider.new_union(