RecentChooser
Einfach ein `gtk.RecentChooserMenu`-Exemplar erstellen und mit der `set_submenu()`-Methode einem Menu-Item hinzufügen.
Wenn man jetzt das "item-activated"-Signal benutzt, bekommt man heraus, welche Datei ausgewählt wurde.
Jetzt kann man dem Chooser-Menü eben noch einen Filter hinzufügen.
Und jetzt eben bei der Öffnen-Funktion noch einbauen, dass der verwendete `gtk.RecentManager` von der geöffneten Datei etwas mitbekommt.
Alles in allem könnte das dann so irgendwie aussehen (ohne Anspruch auf Schönheit oder Vollständigkeit).
Code: Alles auswählen
recent_menu = gtk.RecentChooserMenu()
item.set_subemenu(recent_menu)
Code: Alles auswählen
def on_item_activated(chooser):
print u'Gewählt wurde', chooser.get_current_item().get_uri()
recent_menu.connect('item-activated', on_item_activated)
Code: Alles auswählen
filter_ = gtk.RecentFilter()
filter_.add_pattern(u'*.spam')
recent_menu.set_filter(filter_)
Code: Alles auswählen
manager = gtk.recent_manager_get_default()
manager.add_item(u'file:///tmp/eggs.spam')
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Funktioniert super. Allerdings musste ich mir das menuitem erstmal vom UImanager holen.
Nochmals besten Dank.
Code: Alles auswählen
recent_manager = gtk.recent_manager_get_default()
recent_menu = gtk.RecentChooserMenu(recent_manager)
recent_menu.connect('item-activated', self.event_menu_recent)
filter = gtk.RecentFilter()
filter.add_pattern('*.utr')
recent_menu.set_filter(filter)
menuitem = self.uimanager.get_widget('ui/MenuBar/File/Recent')
menuitem.set_submenu(recent_menu)
Hmm, habe leider erst jetzt bemerkt, dass der RecentChooser nur Dateiöffnungen mitbekommt, die über das Betriebssystem gelaufen sind. Anscheinend gibt es keine Möglichkeit dem RecentChooser applikatorisch geöffnete Dateien hinzu zufügen.
Wenn ich dich jetzt nicht völlig falsch verstanden habe, dann macht doch eben genau das, was du suchst.
Code: Alles auswählen
manager = gtk.recent_manager_get_default()
manager.add_item(u'file:///tmp/eggs.spam')
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)