Wrap more GTK
[xonotic/netradiant.git] / radiant / textureentry.cpp
index 781dcbe..6e6e9de 100644 (file)
  */
 
 #include "textureentry.h"
+
+#include <gtk/gtk.h>
+
+template<class StringList>
+void EntryCompletion<StringList>::connect(ui::Entry entry)
+{
+    if (!m_store) {
+        m_store = ui::ListStore(gtk_list_store_new(1, G_TYPE_STRING));
+
+        fill();
+
+        StringList().connect(IdleDraw::QueueDrawCaller(m_idleUpdate));
+    }
+
+    auto completion = ui::EntryCompletion(gtk_entry_completion_new());
+    gtk_entry_set_completion(entry, completion);
+    gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(m_store));
+    gtk_entry_completion_set_text_column(completion, 0);
+}
+
+template<class StringList>
+void EntryCompletion<StringList>::append(const char *string)
+{
+    m_store.append(0, string);
+}
+
+template<class StringList>
+void EntryCompletion<StringList>::fill()
+{
+    StringList().forEach(AppendCaller(*this));
+}
+
+template<class StringList>
+void EntryCompletion<StringList>::clear()
+{
+    m_store.clear();
+}
+
+template<class StringList>
+void EntryCompletion<StringList>::update()
+{
+    clear();
+    fill();
+}
+
+template
+class EntryCompletion<TextureNameList>;
+
+template
+class EntryCompletion<ShaderList>;