11 #define YUILogComponent "gtk-pkg"
15 #include "ygtkpkgquerycombo.h"
19 GtkWidget *vbox, *combo, *content;
23 Impl (
Factory *factory) : factory (factory), child (NULL) {}
31 if (pThis->impl->child)
32 delete pThis->impl->child;
34 pThis->impl->child = child;
35 child->setListener (pThis->listener);
37 GtkWidget *cur_child = gtk_bin_get_child (GTK_BIN (pThis->impl->content));
39 gtk_container_remove (GTK_CONTAINER (pThis->impl->content), cur_child);
40 gtk_container_add (GTK_CONTAINER (pThis->impl->content), child->getWidget());
41 gtk_widget_grab_focus (child->getWidget());
47 set_child (pThis, gtk_combo_box_get_active (combo));
51 YGtkPkgQueryCombo::YGtkPkgQueryCombo (Factory *factory)
52 : impl (new Impl (factory))
54 impl->combo = gtk_combo_box_text_new();
55 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (impl->combo),
56 YGUtils::empty_row_is_separator_cb, GINT_TO_POINTER (0), NULL);
57 g_signal_connect_after (G_OBJECT (impl->combo),
"changed",
58 G_CALLBACK (combo_changed_cb),
this);
59 impl->content = gtk_event_box_new();
60 impl->vbox = gtk_vbox_new (FALSE, 0);
61 gtk_box_pack_start (GTK_BOX (impl->vbox), impl->combo, FALSE, TRUE, 0);
62 gtk_box_pack_start (GTK_BOX (impl->vbox), impl->content, TRUE, TRUE, 0);
65 YGtkPkgQueryCombo::~YGtkPkgQueryCombo()
68 GtkWidget *YGtkPkgQueryCombo::getWidget()
69 {
return impl->vbox; }
71 void YGtkPkgQueryCombo::add (
const char *title)
73 GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT (impl->combo);
74 gtk_combo_box_text_append (combo, NULL, title);
77 void YGtkPkgQueryCombo::setActive (
int index)
79 GtkComboBox *combo = GTK_COMBO_BOX (impl->combo);
80 if (gtk_combo_box_get_active (combo) != index) {
81 g_signal_handlers_block_by_func (combo, (gpointer) combo_changed_cb,
this);
82 gtk_combo_box_set_active (combo, index);
83 g_signal_handlers_unblock_by_func (combo, (gpointer) combo_changed_cb,
this);
84 set_child (
this, index);
88 bool YGtkPkgQueryCombo::begsUpdate()
89 {
return impl->child->begsUpdate(); }
91 void YGtkPkgQueryCombo::updateList (
Ypp::List list)
92 {
return impl->child->updateList (list); }
94 void YGtkPkgQueryCombo::clearSelection()
95 {
return impl->child->clearSelection(); }
98 {
return impl->child->writeQuery (query); }
100 void YGtkPkgQueryCombo::setListener (Listener *listener)
102 YGtkPkgQueryWidget::setListener (listener);
104 impl->child->setListener (listener);
107 GtkWidget *YGtkPkgQueryCombo::createToolbox()
108 {
return impl->child->createToolbox(); }