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