#if !defined( INCLUDED_TEXTUREENTRY_H )
#define INCLUDED_TEXTUREENTRY_H
-
-#include <gtk/gtkentry.h>
-#include <gtk/gtkliststore.h>
#include "gtkutil/idledraw.h"
#include "generic/static.h"
#include "texwindow.h"
template<typename StringList>
-class EntryCompletion
-{
-GtkListStore* m_store;
-IdleDraw m_idleUpdate;
+class EntryCompletion {
+ ui::ListStore m_store;
+ IdleDraw m_idleUpdate;
public:
-EntryCompletion() : m_store( 0 ), m_idleUpdate( UpdateCaller( *this ) ){
-}
-
-void connect( GtkEntry* entry ){
- if ( m_store == 0 ) {
- m_store = gtk_list_store_new( 1, G_TYPE_STRING );
-
- fill();
-
- StringList().connect( IdleDraw::QueueDrawCaller( m_idleUpdate ) );
- }
-
- GtkEntryCompletion* completion = 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 );
-}
-
-void append( const char* string ){
- GtkTreeIter iter;
- gtk_list_store_append( m_store, &iter );
- gtk_list_store_set( m_store, &iter, 0, string, -1 );
-}
-typedef MemberCaller1<EntryCompletion, const char*, &EntryCompletion::append> AppendCaller;
-
-void fill(){
- StringList().forEach( AppendCaller( *this ) );
-}
-
-void clear(){
- gtk_list_store_clear( m_store );
-}
-
-void update(){
- clear();
- fill();
-}
-typedef MemberCaller<EntryCompletion, &EntryCompletion::update> UpdateCaller;
+ EntryCompletion() : m_store(ui::null), m_idleUpdate(UpdateCaller(*this))
+ {
+ }
+
+ void connect(ui::Entry entry);
+
+ void append(const char *string);
+
+ using AppendCaller = MemberCaller<EntryCompletion, void(const char *), &EntryCompletion::append>;
+
+ void fill();
+
+ void clear();
+
+ void update();
+
+ using UpdateCaller = MemberCaller<EntryCompletion, void(), &EntryCompletion::update>;
};
-class TextureNameList
-{
+class TextureNameList {
public:
-void forEach( const ShaderNameCallback& callback ) const {
- for ( QERApp_ActiveShaders_IteratorBegin(); !QERApp_ActiveShaders_IteratorAtEnd(); QERApp_ActiveShaders_IteratorIncrement() )
- {
- IShader *shader = QERApp_ActiveShaders_IteratorCurrent();
-
- if ( shader_equal_prefix( shader->getName(), "textures/" ) ) {
- callback( shader->getName() + 9 );
- }
- }
-}
-void connect( const SignalHandler& update ) const {
- TextureBrowser_addActiveShadersChangedCallback( update );
-}
+ void forEach(const ShaderNameCallback &callback) const
+ {
+ for (QERApp_ActiveShaders_IteratorBegin(); !QERApp_ActiveShaders_IteratorAtEnd(); QERApp_ActiveShaders_IteratorIncrement()) {
+ IShader *shader = QERApp_ActiveShaders_IteratorCurrent();
+
+ if (shader_equal_prefix(shader->getName(), "textures/")) {
+ callback(shader->getName() + 9);
+ }
+ }
+ }
+
+ void connect(const SignalHandler &update) const
+ {
+ TextureBrowser_addActiveShadersChangedCallback(update);
+ }
};
-typedef Static< EntryCompletion<TextureNameList> > GlobalTextureEntryCompletion;
+typedef Static<EntryCompletion<TextureNameList> > GlobalTextureEntryCompletion;
-class ShaderList
-{
+class ShaderList {
public:
-void forEach( const ShaderNameCallback& callback ) const {
- GlobalShaderSystem().foreachShaderName( callback );
-}
-void connect( const SignalHandler& update ) const {
- TextureBrowser_addShadersRealiseCallback( update );
-}
+ void forEach(const ShaderNameCallback &callback) const
+ {
+ GlobalShaderSystem().foreachShaderName(callback);
+ }
+
+ void connect(const SignalHandler &update) const
+ {
+ TextureBrowser_addShadersRealiseCallback(update);
+ }
};
-typedef Static< EntryCompletion<ShaderList> > GlobalShaderEntryCompletion;
+typedef Static<EntryCompletion<ShaderList> > GlobalShaderEntryCompletion;
#endif