Seite 1 von 1

RecentChooser

Verfasst: Freitag 22. Mai 2009, 18:16
von rhersel
Hat jemand ein Beispiel dafür wie man den gtk.RecentChooser einsetzt um damit ein Submenü der zuletzt geöffneten Files anzuzeigen? Habe im Internet kein Beispiel gefunden.

Verfasst: Dienstag 26. Mai 2009, 22:26
von Trundle
Einfach ein `gtk.RecentChooserMenu`-Exemplar erstellen und mit der `set_submenu()`-Methode einem Menu-Item hinzufügen.

Code: Alles auswählen

recent_menu = gtk.RecentChooserMenu()
item.set_subemenu(recent_menu)
Wenn man jetzt das "item-activated"-Signal benutzt, bekommt man heraus, welche Datei ausgewählt wurde.

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)
Jetzt kann man dem Chooser-Menü eben noch einen Filter hinzufügen.

Code: Alles auswählen

filter_ = gtk.RecentFilter()
filter_.add_pattern(u'*.spam')

recent_menu.set_filter(filter_)
Und jetzt eben bei der Öffnen-Funktion noch einbauen, dass der verwendete `gtk.RecentManager` von der geöffneten Datei etwas mitbekommt.

Code: Alles auswählen

manager = gtk.recent_manager_get_default()
manager.add_item(u'file:///tmp/eggs.spam')
Alles in allem könnte das dann so irgendwie aussehen (ohne Anspruch auf Schönheit oder Vollständigkeit).

Verfasst: Donnerstag 28. Mai 2009, 17:19
von rhersel
Na das nenne ich mal eine super Anleitung.
Vielen Dank Trundle.
Werde es in den nächsten Tagen ausprobieren.

Verfasst: Dienstag 2. Juni 2009, 21:09
von rhersel
Funktioniert super. Allerdings musste ich mir das menuitem erstmal vom UImanager holen.

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)
Nochmals besten Dank.

Verfasst: Dienstag 2. Juni 2009, 21:26
von rhersel
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.

Verfasst: Dienstag 2. Juni 2009, 23:15
von Trundle
Wenn ich dich jetzt nicht völlig falsch verstanden habe, dann macht doch eben genau

Code: Alles auswählen

manager = gtk.recent_manager_get_default()
manager.add_item(u'file:///tmp/eggs.spam')
das, was du suchst.

Verfasst: Mittwoch 3. Juni 2009, 09:26
von rhersel
Du hast mich völlig richtig verstanden; ich war nur zu blöd zum Lesen.
Das ist doch genau was ich will.
Danke