by Guest » 04 Jan 2025, 06:49
Ich verwende GTK Blueprints für die Schnittstelle
Code: Select all
menu cover_action {
section {
item {
label: _("Set cover");
action: "card.change_cover";
}
item {
label: _("Remove cover");
action: "card.remove_cover";
}
}
}
Die Aktionen dieser Menüelemente sollten in der SongCard-Klasse definiert werden (die von Gtk.Box geerbt wird)
Code: Select all
class SongCard(Gtk.Box):
def __init__(file):
super().__init__()
self.install_action("card.change_cover", None, self.metadata_change_cover)
self.install_action("card.remove_cover", None, self.metadata_remove_cover)
... some code ....
def metadata_change_cover(self, *_args) -> None:
dialog = Gtk.FileDialog(
default_filter=Gtk.FileFilter(mime_types=["image/png", "image/jpeg"])
)
dialog.open(shared.win, None, self.on_metadata_change_cover)
def metadata_remove_cover(self, *_args) -> None:
self._mde_new_cover_path = None
self._file._cover_updated = True
self.metadata_editor_cover_image.set_from_icon_name("note-placeholder")
Die einzige Möglichkeit, die ich kenne, um eine Menüaktion festzulegen, besteht darin, den Aktionsnamen auf den Aktionsparameter im Blueprint zu setzen. Aber alle diese Aktionen müssen ein Präfix haben, z.B. app oder win.
Wie verwende ich die Instanz der SongCard-Klasse als Bereich, um sie als Präfix für diese Aktionen festzulegen? (self.install_action funktioniert nicht)
Ich verwende GTK Blueprints für die Schnittstelle
[code]menu cover_action {
section {
item {
label: _("Set cover");
action: "card.change_cover";
}
item {
label: _("Remove cover");
action: "card.remove_cover";
}
}
}
[/code]
Die Aktionen dieser Menüelemente sollten in der SongCard-Klasse definiert werden (die von Gtk.Box geerbt wird)
[code]class SongCard(Gtk.Box):
def __init__(file):
super().__init__()
self.install_action("card.change_cover", None, self.metadata_change_cover)
self.install_action("card.remove_cover", None, self.metadata_remove_cover)
... some code ....
def metadata_change_cover(self, *_args) -> None:
dialog = Gtk.FileDialog(
default_filter=Gtk.FileFilter(mime_types=["image/png", "image/jpeg"])
)
dialog.open(shared.win, None, self.on_metadata_change_cover)
def metadata_remove_cover(self, *_args) -> None:
self._mde_new_cover_path = None
self._file._cover_updated = True
self.metadata_editor_cover_image.set_from_icon_name("note-placeholder")
[/code]
Die einzige Möglichkeit, die ich kenne, um eine Menüaktion festzulegen, besteht darin, den Aktionsnamen auf den Aktionsparameter im Blueprint zu setzen. Aber alle diese Aktionen müssen ein Präfix haben, z.B. app oder win.
Wie verwende ich die Instanz der SongCard-Klasse als Bereich, um sie als Präfix für diese Aktionen festzulegen? (self.install_action funktioniert nicht)