12 #define YUILogComponent "gtk-pkg" 16 #include "ygtkpkgquerycombo.h" 20 GtkWidget *vbox, *combo, *content;
24 Impl (
Factory *factory) : factory (factory), child (NULL) {}
32 if (pThis->impl->child)
33 delete pThis->impl->child;
35 pThis->impl->child = child;
36 child->setListener (pThis->listener);
38 GtkWidget *cur_child = gtk_bin_get_child (GTK_BIN (pThis->impl->content));
40 gtk_container_remove (GTK_CONTAINER (pThis->impl->content), cur_child);
41 gtk_container_add (GTK_CONTAINER (pThis->impl->content), child->getWidget());
42 gtk_widget_grab_focus (child->getWidget());
48 set_child (pThis, gtk_combo_box_get_active (combo));
52 YGtkPkgQueryCombo::YGtkPkgQueryCombo (Factory *factory)
53 : impl (new Impl (factory))
55 impl->combo = gtk_combo_box_text_new();
56 gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (impl->combo),
57 YGUtils::empty_row_is_separator_cb, GINT_TO_POINTER (0), NULL);
58 g_signal_connect_after (G_OBJECT (impl->combo),
"changed",
59 G_CALLBACK (combo_changed_cb),
this);
60 impl->content = gtk_event_box_new();
61 impl->vbox = gtk_vbox_new (FALSE, 0);
62 gtk_box_pack_start (GTK_BOX (impl->vbox), impl->combo, FALSE, TRUE, 0);
63 gtk_box_pack_start (GTK_BOX (impl->vbox), impl->content, TRUE, TRUE, 0);
66 YGtkPkgQueryCombo::~YGtkPkgQueryCombo()
69 GtkWidget *YGtkPkgQueryCombo::getWidget()
70 {
return impl->vbox; }
72 void YGtkPkgQueryCombo::add (
const char *title)
74 GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT (impl->combo);
75 gtk_combo_box_text_append (combo, NULL, title);
78 void YGtkPkgQueryCombo::setActive (
int index)
80 GtkComboBox *combo = GTK_COMBO_BOX (impl->combo);
81 if (gtk_combo_box_get_active (combo) != index) {
82 g_signal_handlers_block_by_func (combo, (gpointer) combo_changed_cb,
this);
83 gtk_combo_box_set_active (combo, index);
84 g_signal_handlers_unblock_by_func (combo, (gpointer) combo_changed_cb,
this);
85 set_child (
this, index);
89 bool YGtkPkgQueryCombo::begsUpdate()
90 {
return impl->child->begsUpdate(); }
92 void YGtkPkgQueryCombo::updateList (
Ypp::List list)
93 {
return impl->child->updateList (list); }
95 void YGtkPkgQueryCombo::clearSelection()
96 {
return impl->child->clearSelection(); }
99 {
return impl->child->writeQuery (query); }
101 void YGtkPkgQueryCombo::setListener (Listener *listener)
103 YGtkPkgQueryWidget::setListener (listener);
105 impl->child->setListener (listener);
108 GtkWidget *YGtkPkgQueryCombo::createToolbox()
109 {
return impl->child->createToolbox(); }