GTK+ listview finditem

Lehet hogy van ilyen csak én nem találtam.
Ugy akarok feltölteni egy listviewet hogy ne legyenek benne duplikátumok.
Ha már van akkor ne tegye bele
win32-n erre van "LVM_FINDITEM" üzenet

Vagy tényleg végig kell olvasni az egész listviewet, minden elem beszúrása előtt?

Hozzászólások

Szia,

Nem értek a GTK+-hoz, de szerintem ha nem rendezett a listview, akkor az ha van "LVM_FINDITEM" a GTK+-ban (vagy bármi más), annak is végig kell olvasni a listát. Ez máshogy nem megy. :-(
Én mindig készítek egy konténer osztályt (List, Tree, Map) a ComboBox, ListView, stb... GUI elemek mögé, és az végzi a hozzáadást, módosítást, törlést és a képernyő frissítését. Abban gyorsan tudsz keresni. Ez olyan mint a Model View Controller szemlélet a Qt-ban vagy a Java alatt a SWING, vagy a SWT (Eclipse) ablakkezelőkben/keretrendszerekben.

Perger Attila

Miért a FIND nem megy rajta végig (amíg nem talál) ? :)

Köszönöm a javaslatokat , végülis igy megoldottam:

	// check if already present
	res=gtk_tree_model_get_iter_first(model,&iter); // check whole listview
	gtk_tree_model_get (model, &iter, FILENAME, &text, -1);
	if(strcmp(filename,text)!=0) {
		while (res==TRUE) {
			gtk_tree_model_get (model, &iter, FILENAME, &text, -1);
			if(strcmp(filename,text)==0) break;
			res=gtk_tree_model_iter_next(model,&iter);
		}
		if (res==FALSE) {
			gtk_list_store_append (store, &iter);
			gtk_list_store_set (store, &iter, ICON, pixbuf, FILENAME, filename,SIZE, buf2, MODIFIED, buf3, -1);
		}
	}