Seite 1 von 1

IconView Icons umbenenen

Verfasst: Mittwoch 7. Oktober 2009, 08:55
von Andyh
Hallo

Wie kann ich bei einem Iconview statt des Textes ein Entry Anzeigen lassen,
wie beim Nautilus wenn man auf einem Icon "F2" drückt?

Gruß
Andyh

Verfasst: Mittwoch 7. Oktober 2009, 11:26
von ms4py
Deine Beschreibung ist äußerst unklar, aber IMO suchst du das:
PyGTK Referenz hat geschrieben:gtk.IconView.set_cursor

def set_cursor(path, cell=None, start_editing=False)

start_editing : if True the specified cell should start being edited

Verfasst: Montag 12. Oktober 2009, 10:20
von Andyh
Hallo

Danke für deine Antwort!
Leider komme ich mit dem zweiten Argument nicht klar ("cell"), ich habe keine Ahnung woher ich den "cell Renderer" bekommen kann wenn ich "F2" drücke zum umbenennen der Icons. Da gibt es zwar "get_item_at_pos" das gibt den "cell Renderer" zurück, aber da weiß ich wieder nicht wie ich an die Position des Markieren Icons kommen.

Gruß
Andyh

Verfasst: Montag 12. Oktober 2009, 20:20
von ms4py
``cell`` benötigst du doch theoretisch gar nicht?!
Und für den ``path`` gibt es:
gtk.IconView.get_selected_items

def get_selected_items()

Returns : a list of the paths of the selected icons.
Hier mal Beispielcode:

Code: Alles auswählen

icon_view.set_selection_mode(gtk.SELECTION_SINGLE)
sel_items = icon_view.get_selected_items()
if len(sel_items) == 1:
  icon_view.set_cursor(sel_items[0], start_editing=True)
else:
  # no selection
P.S. Alles ungetestet der Referenz entnommen. Poste bitte eventuelle Fehler.

Verfasst: Dienstag 13. Oktober 2009, 12:00
von Andyh
Hallo

Danke nochmal für deine Antwort!

Code: Alles auswählen

import gtk

def rename(accel_group, accel, keyval, modifier):
    print "rename"
    sel_items = i.get_selected_items()
    if len(sel_items) == 1:
        print sel_items
        i.set_cursor(sel_items[0], start_editing=True) 
  
w = gtk.Window()

i = gtk.IconView()
i.set_selection_mode(gtk.SELECTION_SINGLE) 

model = gtk.ListStore(str, gtk.gdk.Pixbuf)

i.set_model(model)
i.set_text_column(0)
i.set_pixbuf_column(1)
i.set_columns(-1)
i.set_item_width(100)

pixbuf = gtk.gdk.pixbuf_new_from_file("/usr/share/icons/gnome/scalable/mimetypes/audio-x-generic.svg")
model.append(["Test", pixbuf])

w.add(i)

accelgroup = gtk.AccelGroup()

key, modifier = gtk.accelerator_parse("F2")
        
accelgroup.connect_group(key, modifier, gtk.ACCEL_LOCKED, rename)

w.add_accel_group(accelgroup)
    
w.show_all()

gtk.main()
Es passiert beim drücken von "F2" nichts.

Gruß
Andyh

Verfasst: Dienstag 13. Oktober 2009, 13:06
von ms4py
Wird die Methode überhaupt aufgerufen? Kenn mich mit den Tastatureingaben nicht aus.

Ansonsten starte die Funktion mal testweise über einen extra Button.

Verfasst: Dienstag 13. Oktober 2009, 13:10
von Andyh
Hallo

Die Funktion wird aufgerufen, die Ausgabe über die zwei print's sieht so aus:

rename
[(0,)]

Gruß
Andyh