static void gvc_combo_box_init (GvcComboBox *combo_box) { GtkWidget *frame; GtkWidget *box; GtkWidget *sbox; GtkWidget *ebox; GtkCellRenderer *renderer; combo_box->priv = GVC_COMBO_BOX_GET_PRIVATE (combo_box); combo_box->priv->model = GTK_TREE_MODEL (gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_STRING)); combo_box->priv->label = gtk_label_new (NULL); gtk_widget_set_halign (combo_box->priv->label, GTK_ALIGN_START); /* frame */ frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); gtk_box_pack_start (GTK_BOX (combo_box), frame, TRUE, TRUE, 0); combo_box->priv->drop_box = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); combo_box->priv->combobox = gtk_combo_box_new_with_model (combo_box->priv->model); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box->priv->combobox), renderer, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_box->priv->combobox), renderer, "text", COL_HUMAN_NAME); /* Make sure that the combo box isn't too wide when human names are overly long, * but that we can still read the full length of it */ g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); g_object_set (G_OBJECT (combo_box->priv->combobox), "popup-fixed-width", FALSE, NULL); combo_box->priv->start_box = sbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (sbox), combo_box->priv->label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box), combo_box->priv->combobox, TRUE, TRUE, 0); combo_box->priv->button = gtk_button_new_with_label ("APPLICATION BUG"); gtk_button_set_use_underline (GTK_BUTTON (combo_box->priv->button), TRUE); gtk_widget_set_no_show_all (combo_box->priv->button, TRUE); gtk_box_pack_start (GTK_BOX (box), combo_box->priv->button, FALSE, FALSE, 0); combo_box->priv->end_box = ebox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0); if (combo_box->priv->size_group != NULL) { gtk_size_group_add_widget (combo_box->priv->size_group, sbox); if (combo_box->priv->symmetric) { gtk_size_group_add_widget (combo_box->priv->size_group, ebox); } } gtk_container_add (GTK_CONTAINER (frame), combo_box->priv->drop_box); gtk_widget_show_all (frame); gtk_label_set_mnemonic_widget (GTK_LABEL (combo_box->priv->label), combo_box->priv->combobox); g_signal_connect (G_OBJECT (combo_box->priv->combobox), "changed", G_CALLBACK (on_combo_box_changed), combo_box); g_signal_connect (G_OBJECT (combo_box->priv->button), "clicked", G_CALLBACK (on_combo_box_button_clicked), combo_box); }
static void gvc_combo_box_init (GvcComboBox *combobox) { GtkWidget *frame; GtkCellRenderer *renderer; frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); combobox->priv = GVC_COMBO_BOX_GET_PRIVATE (combobox); combobox->priv->model = GTK_TREE_MODEL (gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_STRING)); combobox->priv->combobox = gtk_combo_box_new_with_model (combobox->priv->model); combobox->priv->label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (combobox->priv->label), 0.0); gtk_label_set_yalign (GTK_LABEL (combobox->priv->label), 0.5); gtk_label_set_mnemonic_widget (GTK_LABEL (combobox->priv->label), combobox->priv->combobox); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox->priv->combobox), renderer, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combobox->priv->combobox), renderer, "text", COL_HUMAN_NAME); combobox->priv->drop_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); combobox->priv->start_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); combobox->priv->end_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); /* Make sure the combo box does not get too long on long profile names */ g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_combo_box_set_popup_fixed_width (GTK_COMBO_BOX (combobox->priv->combobox), FALSE); gtk_box_pack_start (GTK_BOX (combobox), frame, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (combobox->priv->drop_box), combobox->priv->start_box, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (combobox->priv->start_box), combobox->priv->label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (combobox->priv->drop_box), combobox->priv->combobox, TRUE, TRUE, 0); combobox->priv->button = gtk_button_new_with_label (""); gtk_box_pack_start (GTK_BOX (combobox->priv->drop_box), combobox->priv->button, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (combobox->priv->drop_box), combobox->priv->end_box, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (frame), combobox->priv->drop_box); g_signal_connect (G_OBJECT (combobox->priv->combobox), "changed", G_CALLBACK (on_combo_box_changed), combobox); g_signal_connect (G_OBJECT (combobox->priv->button), "clicked", G_CALLBACK (on_combo_box_button_clicked), combobox); gtk_widget_set_no_show_all (combobox->priv->button, TRUE); gtk_widget_show_all (frame); }