eb05362005-11-05Henrik Grubbström (Grubba) /* -*- C -*- */
1a05542005-07-28Martin Nilsson require gtk24; class GTK2.EntryCompletion; inherit G.Object;
587c132006-01-03Martin Nilsson inherit GTK2.CellLayout;
1a05542005-07-28Martin Nilsson  //! Properties: require gtk26; //! int inline-completion endrequire; //! int minimum-key-length //! GTK2.TreeModel model require gtk26; //! int popup-completion
2a8f892006-02-02Lance Dillon require gtk28; //! int popup-single-match endrequire;
1a05542005-07-28Martin Nilsson //! int text-column endrequire; signal action_activated; require gtk26; signal insert_prefix; endrequire; signal match_selected;
3d76632005-11-03Lance Dillon void create(?mapping(string:mixed) props)
1a05542005-07-28Martin Nilsson //! Creates a new widget.
3d76632005-11-03Lance Dillon {
ba9e802006-02-27Martin Stjernholm  pgtk2_verify_not_inited(); pgtk2_verify_setup();
3d76632005-11-03Lance Dillon  if (args) { INIT_WITH_PROPS(GTK_TYPE_ENTRY_COMPLETION);
ba9e802006-02-27Martin Stjernholm  pgtk2_pop_n_elems(args);
3d76632005-11-03Lance Dillon  } else { GtkEntryCompletion *ge; ge=gtk_entry_completion_new(); THIS->obj=G_OBJECT(ge); }
ba9e802006-02-27Martin Stjernholm  pgtk2__init_this_object();
3d76632005-11-03Lance Dillon }
1a05542005-07-28Martin Nilsson 
2a8f892006-02-02Lance Dillon +GTK2.Widget get_entry();
1a05542005-07-28Martin Nilsson //! Gets the entry this widget has been attached to.
69e6502009-11-16Per Hedbor void set_match_func( function(object,string,object:void) cb ) //! Sets the function to be called to decide if a specific row should //! be displayed. { pgtk2_verify_inited(); { extern gboolean pgtk2_entry_completion_match_func( GtkEntryCompletion *x, const gchar *key, GtkTreeIter *iter, gpointer user_data); struct signal_data *sd; struct svalue *sv1;
96f5f42018-08-05Martin Nilsson  get_all_args(NULL,args,"%*",&sv1);
69e6502009-11-16Per Hedbor  sd=(struct signal_data *)g_malloc(sizeof(struct signal_data)); if (sd==NULL) SIMPLE_OUT_OF_MEMORY_ERROR("set_match_func",sizeof(struct signal_data)); assign_svalue_no_free( &sd->cb, sv1 );
017b572011-10-28Henrik Grubbström (Grubba)  SET_SVAL(sd->args, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
69e6502009-11-16Per Hedbor  gtk_entry_completion_set_match_func( GTK_ENTRY_COMPLETION(THIS->obj), pgtk2_entry_completion_match_func, (gpointer*)sd, (GtkDestroyNotify)pgtk2_free_signal_data); } RETURN_THIS(); }
1a05542005-07-28Martin Nilsson void set_model(?GTK2.TreeModel model) //! Sets the model. If this completion already has a model set, it will //! remove it before setting the new model. If omitted it will unset the //! model. {
ba9e802006-02-27Martin Stjernholm  pgtk2_verify_inited();
1a05542005-07-28Martin Nilsson  if (args) { struct object *o1;
96f5f42018-08-05Martin Nilsson  get_all_args(NULL,args,"%o",&o1);
1a05542005-07-28Martin Nilsson  gtk_entry_completion_set_model(GTK_ENTRY_COMPLETION(THIS->obj), GTK_TREE_MODEL(get_gobject(o1))); } else { gtk_entry_completion_set_model(GTK_ENTRY_COMPLETION(THIS->obj),NULL); } RETURN_THIS(); }
2a8f892006-02-02Lance Dillon +GTK2.TreeModel get_model();
1a05542005-07-28Martin Nilsson //! Returns the model being used as the data source. void set_minimum_key_length(int length); //! Requires the length of the search key to be at least length long. This is //! useful for long lists, where completing using a small key takes a lot of //! time and will come up with meaningless results anyway (i.e. a too large //! dataset). int get_minimum_key_length(); //! Returns the minimum key length. void complete(); //! Requests a completion operation, or in other words a refiltering of the //! current list with completions, using the current key. The completion list //! view will be updated accordingly. require gtk26; void insert_prefix(); //! Requests a prefix insertion. endrequire; void insert_action_text(int index, string text); //! Inserts an action in the action item list at position index with the //! specified text. If you want the action item to have markup, use //! insert_action_markup(). void insert_action_markup(int index, string markup); //! Inserts an action in the action item list at position index with the //! specified markup. void delete_action(int index); //! Deletes the action at index. void set_text_column(int column); //! Convenience function for setting up the most used case of this code: a //! completion list with just strings. This function will set up the //! completion to have a list displaying all (and just) strings in the list, //! and to get those strings from column column in the model. require gtk26; int get_text_column(); //! Returns the column in the model to get strings from. void set_inline_completion(int inline_completion); //! Sets whether the common prefix of the possible completions should be //! automatically inserted in the entry.
2a8f892006-02-02Lance Dillon int get_inline_completion(); //! Returns whether the common prefix of the possible completions should be //! automatically inserted in the entry.
1a05542005-07-28Martin Nilsson void set_popup_completion(int setting); //! Sets whether the completions should be presented in a popup window. int get_popup_completion(); //! Returns whether completions should be presented in a popup window. endrequire;
69e6502009-11-16Per Hedbor require gtk212; void set_inline_selection(int inline_selection); //! Sets whether it is possible to cycle through the possible completions inside the entry. endrequire;
3d76632005-11-03Lance Dillon require gtk28; void set_popup_set_width(int setting); //! Sets whether the completion popup window will be resized to be the same //! width as the entry.
35670f2005-12-18Martin Nilsson int get_popup_set_width();
3d76632005-11-03Lance Dillon //! Returns whether the completion popup window will be resized to the width //! of the entry. void set_popup_single_match(int setting); //! Sets whether the completion popup window will appear even if there is only
f284492006-08-03Lance Dillon //! a single match. You may want to set this to 0 if you are using inline
3d76632005-11-03Lance Dillon //! completion. int get_popup_single_match(); //! Returns whether the completion popup window will appear even if there is //! only a single match. endrequire;
1a05542005-07-28Martin Nilsson endrequire;