static VALUE cview_initialize(int argc, VALUE *argv, VALUE self) { VALUE text; VALUE with_markup = Qnil; GtkWidget *widget = NULL; rb_scan_args(argc, argv, "02", &text, &with_markup); if (NIL_P(text)) { widget = gtk_cell_view_new(); } else { G_CHILD_SET(self, id_text, text); if (TYPE(text) == T_STRING){ if (NIL_P(with_markup) || RVAL2CBOOL(with_markup)){ widget = gtk_cell_view_new_with_markup(RVAL2CSTR(text)); } else { widget = gtk_cell_view_new_with_text(RVAL2CSTR(text)); } } else if (rb_obj_is_kind_of(text, GTYPE2CLASS(GDK_TYPE_PIXBUF))){ widget = gtk_cell_view_new_with_pixbuf(GDK_PIXBUF(RVAL2GOBJ(text))); } else { rb_raise(rb_eArgError, "invalid argument %s (expect String or Gdk::Pixbuf)", rb_class2name(CLASS_OF(text))); } } RBGTK_INITIALIZE(self, widget); return Qnil; }
/* blaat */ static GtkTreeModel * create_tree_blaat (void) { GtkWidget *cellview; GtkTreeIter iter, iter2; GtkTreeStore *store; cellview = gtk_cell_view_new (); store = gtk_tree_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, "dialog-warning", 1, "dialog-warning", 2, FALSE, -1); gtk_tree_store_append (store, &iter2, &iter); gtk_tree_store_set (store, &iter2, 0, "process-stop", 1, "process-stop", 2, FALSE, -1); gtk_tree_store_append (store, &iter2, &iter); gtk_tree_store_set (store, &iter2, 0, "document-new", 1, "document-new", 2, FALSE, -1); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, "edit-clear", 1, "edit-clear", 2, FALSE, -1); #if 0 gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, NULL, 1, "separator", 2, TRUE, -1); #endif gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, "document-open", 1, "document-open", 2, FALSE, -1); gtk_widget_destroy (cellview); return GTK_TREE_MODEL (store); }
static void he_check_button_init (HeCheckButton *self) { HeCheckButtonPrivate *priv = HE_CHECK_BUTTON_GET_PRIVATE (self); /* Store private part */ self->priv = priv; priv->title = GTK_LABEL (gtk_label_new (NULL)); priv->value = GTK_LABEL (gtk_label_new (NULL)); priv->alignment = gtk_alignment_new (0.5, 0.5, 0, 0); priv->toggle_renderer = GTK_CELL_RENDERER_TOGGLE (gtk_cell_renderer_toggle_new ()); priv->cell_view = gtk_cell_view_new (); priv->hbox = NULL; priv->label_box = NULL; priv->style = HE_CHECK_BUTTON_STYLE_NORMAL; priv->setting_style = FALSE; /* Setup the cell renderer */ /* We need to set the correct style from the gtkrc file. Otherwise the check box * does not look like a check box on a HildonCheckButton. */ GtkStyle *style = gtk_rc_get_style_by_paths(gtk_widget_get_settings(GTK_WIDGET(self)), NULL, "*.HildonCheckButton.GtkAlignment.GtkHBox.GtkCellView", G_TYPE_NONE); gtk_widget_set_style(priv->cell_view, style); /* Make sure that the check box is always shown, no matter the value of gtk-button-images */ g_signal_connect (priv->cell_view, "notify::visible", G_CALLBACK (gtk_widget_show), NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->cell_view), GTK_CELL_RENDERER (priv->toggle_renderer), TRUE); /* Get checkbox-size style property of HildonCheckButton from theme */ style = gtk_rc_get_style_by_paths (gtk_widget_get_settings (GTK_WIDGET(self)), NULL, "*.HildonCheckButton", HILDON_TYPE_CHECK_BUTTON); glong checkbox_size = get_style_property_long (style, HILDON_TYPE_CHECK_BUTTON, "checkbox-size"); /* Set the indicator to the right size (the size of the pixmap) */ g_object_set (priv->toggle_renderer, "indicator-size", checkbox_size, NULL); /* Setup the labels */ gtk_widget_set_name (GTK_WIDGET (priv->title), "hildon-button-title"); gtk_widget_set_name (GTK_WIDGET (priv->value), "hildon-button-value"); he_check_button_set_style (self, HE_CHECK_BUTTON_STYLE_NORMAL); gtk_misc_set_alignment (GTK_MISC (priv->title), 0, 0.5); gtk_misc_set_alignment (GTK_MISC (priv->value), 0, 0.5); g_object_ref_sink (priv->alignment); /* The labels are not shown automatically, see he_check_button_set_(title|value) */ gtk_widget_set_no_show_all (GTK_WIDGET (priv->title), TRUE); gtk_widget_set_no_show_all (GTK_WIDGET (priv->value), TRUE); gtk_button_set_focus_on_click (GTK_BUTTON (self), FALSE); }
static GtkTreeModel * create_stock_icon_store (void) { gchar *stock_id[6] = { GTK_STOCK_DIALOG_WARNING, GTK_STOCK_STOP, GTK_STOCK_NEW, GTK_STOCK_CLEAR, NULL, GTK_STOCK_OPEN }; GtkStockItem item; GdkPixbuf *pixbuf; GtkWidget *cellview; GtkTreeIter iter; GtkListStore *store; gchar *label; gint i; cellview = gtk_cell_view_new (); store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING); for (i = 0; i < G_N_ELEMENTS (stock_id); i++) { if (stock_id[i]) { pixbuf = gtk_widget_render_icon (cellview, stock_id[i], GTK_ICON_SIZE_BUTTON, NULL); gtk_stock_lookup (stock_id[i], &item); label = strip_underscore (item.label); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, PIXBUF_COL, pixbuf, TEXT_COL, label, -1); g_object_unref (pixbuf); g_free (label); } else { gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, PIXBUF_COL, NULL, TEXT_COL, "separator", -1); } } gtk_widget_destroy (cellview); return GTK_TREE_MODEL (store); }
static GtkTreeModel * create_list_blaat (void) { GtkWidget *cellview; GtkTreeIter iter; GtkListStore *store; cellview = gtk_cell_view_new (); store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "dialog-warning", 1, "dialog-warning", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "process-stop", 1, "process-stop", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "document-new", 1, "document-new", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "edit-clear", 1, "edit-clear", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, NULL, 1, "separator", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "document-open", 1, "document-open", -1); gtk_widget_destroy (cellview); return GTK_TREE_MODEL (store); }
/* test that we have a cell area after new() */ static void test_cellview_new (void) { GtkWidget *view; GtkCellArea *area; view = gtk_cell_view_new (); area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (view)); g_assert (GTK_IS_CELL_AREA_BOX (area)); g_object_ref_sink (view); g_object_unref (view); }
static void populate_list_blaat (gpointer data) { GtkComboBox *combo_box = GTK_COMBO_BOX (data); GtkListStore *store; GtkWidget *cellview; GtkTreeIter iter; store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box)); gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); if (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)) return; cellview = gtk_cell_view_new (); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "process-stop", 1, "process-stop", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "document-new", 1, "document-new", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "edit-clear", 1, "edit-clear", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, NULL, 1, "separator", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "document-open", 1, "document-open", -1); gtk_widget_destroy (cellview); }
int prerun(GList **config) { GtkTreeIter iter; char *fn, *testurl; int i; // get the branch used PACCONF = data_get(*config, "pacconf"); if(run_discs_config(config) == 1) return 0; while(run_net_config(config) == -1) {} if(mirrorlist == NULL) { fn = g_strdup_printf("%s/%s", PACCONFPATH, PACCONF); mirrorlist = getmirrors(fn); free(fn); GtkWidget *cellview = gtk_cell_view_new (); GdkPixbuf *pixgood = gtk_widget_render_icon(cellview, GTK_STOCK_YES, GTK_ICON_SIZE_BUTTON, NULL); GdkPixbuf *pixbad = gtk_widget_render_icon(cellview, GTK_STOCK_NO, GTK_ICON_SIZE_BUTTON, NULL); for(i=0; i < g_list_length(mirrorlist); i+=3) { gtk_list_store_append(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewserver))), &iter); testurl = strdup(((char*)g_list_nth_data(mirrorlist, i)) + 6); strchr(testurl, '/')[0] = '\0'; if(is_connected(testurl, 80, 1) < 1) { gtk_list_store_set(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewserver))), &iter, COLUMN_USE, (gboolean)(GPOINTER_TO_INT(g_list_nth_data(mirrorlist, i+2))), COLUMN_STATUS, pixbad, COLUMN_NAME, (gchar*)g_list_nth_data(mirrorlist, i), COLUMN_FROM, (gchar*)g_list_nth_data(mirrorlist, i+1), -1); } else { gtk_list_store_set(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewserver))), &iter, COLUMN_USE, (gboolean)(GPOINTER_TO_INT(g_list_nth_data(mirrorlist, i+2))), COLUMN_STATUS, pixgood, COLUMN_NAME, (gchar*)g_list_nth_data(mirrorlist, i), COLUMN_FROM, (gchar*)g_list_nth_data(mirrorlist, i+1), -1); } free(testurl); } } return 0; }
void hybrid_head_init() { GtkWidget *align; hybrid_head = g_new0(HybridHead, 1); hybrid_head->vbox = gtk_vbox_new(FALSE, 0); hybrid_head->eventbox = gtk_event_box_new(); hybrid_head->editbox = gtk_vbox_new(TRUE, 4); hybrid_head->cellview = gtk_cell_view_new(); gtk_container_add(GTK_CONTAINER(hybrid_head->eventbox), hybrid_head->cellview); hybrid_head->edit_label = gtk_label_new(NULL); hybrid_head->edit_entry = gtk_entry_new(); align = gtk_alignment_new(0, 0, 0, 0); gtk_container_add(GTK_CONTAINER(align), hybrid_head->edit_label); gtk_box_pack_start(GTK_BOX(hybrid_head->editbox), align, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hybrid_head->editbox), hybrid_head->edit_entry, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hybrid_head->vbox), hybrid_head->eventbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hybrid_head->vbox), hybrid_head->editbox, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(hybrid_head->editbox), 3); g_signal_connect(G_OBJECT(hybrid_head->eventbox), "button_press_event", GTK_SIGNAL_FUNC(button_press_cb), NULL); g_signal_connect(G_OBJECT(hybrid_head->edit_entry), "focus-out-event", GTK_SIGNAL_FUNC(focus_out_cb), NULL); g_signal_connect(G_OBJECT(hybrid_head->edit_entry), "activate", GTK_SIGNAL_FUNC(entry_activate_cb), NULL); hybrid_tooltip_setup(hybrid_head->eventbox, NULL, NULL, tooltip_init, NULL); cell_view_init(hybrid_head); hybrid_head_bind_to_account(NULL); }
/** * gtk_cell_view_new_with_text: * @text: the text to display in the cell view * * Creates a new #GtkCellView widget, adds a #GtkCellRendererText * to it, and makes its show @text. * * Return value: A newly created #GtkCellView widget. * * Since: 2.6 */ GtkWidget * gtk_cell_view_new_with_text (const gchar *text) { GtkCellView *cellview; GtkCellRenderer *renderer; GValue value = {0, }; cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), renderer, TRUE); g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, text); gtk_cell_view_set_value (cellview, renderer, "text", &value); g_value_unset (&value); return GTK_WIDGET (cellview); }
/** * gtk_cell_view_new_with_pixbuf: * @pixbuf: the image to display in the cell view * * Creates a new #GtkCellView widget, adds a #GtkCellRendererPixbuf * to it, and makes its show @pixbuf. * * Return value: A newly created #GtkCellView widget. * * Since: 2.6 */ GtkWidget * gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf) { GtkCellView *cellview; GtkCellRenderer *renderer; GValue value = {0, }; cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), renderer, TRUE); g_value_init (&value, GDK_TYPE_PIXBUF); g_value_set_object (&value, pixbuf); gtk_cell_view_set_value (cellview, renderer, "pixbuf", &value); g_value_unset (&value); return GTK_WIDGET (cellview); }
static GtkTreeModel * create_empty_list_blaat (void) { GtkWidget *cellview; GtkTreeIter iter; GtkListStore *store; cellview = gtk_cell_view_new (); store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, "dialog-warning", 1, "dialog-warning", -1); gtk_widget_destroy (cellview); return GTK_TREE_MODEL (store); }
/** * Create the buddy tips panel. We implement it with GtkCellView. * The layout is: * * ----------------------------------------------------- * | | Name | Proto | Status | * | Icon |--------------(markup)-| Icon | Icon | * | (32×32) | Mood phrase | (16×16)| (16×16)| * ----------------------------------------------------- */ static void create_buddy_tips_panel(GtkWidget *vbox, HybridChatWindow *chat) { GtkWidget *cellview; GtkListStore *store; GtkCellRenderer *renderer; GtkTreePath *path; HybridAccount *account; HybridModule *proto; HybridBuddy *buddy; gchar *name_text; gchar *mood_text; GdkPixbuf *icon_pixbuf; GdkPixbuf *proto_pixbuf; GdkPixbuf *presence_pixbuf; GtkWidget *eventbox; g_return_if_fail(vbox != NULL); cellview = gtk_cell_view_new(); store = gtk_list_store_new(LABEL_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF); gtk_cell_view_set_model(GTK_CELL_VIEW(cellview), GTK_TREE_MODEL(store)); /* * GtkCellView doesn't have a GdkWindow, we wrap it with an EventBox, * and then setup tooltip on the EventBox. */ eventbox = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), FALSE); gtk_container_add(GTK_CONTAINER(eventbox), cellview); /* buddy icon renderer */ renderer = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cellview), renderer, FALSE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(cellview), renderer, "pixbuf", BUDDY_ICON_COLUMN, NULL); g_object_set(renderer, "yalign", 0.5, "xpad", 3, "ypad", 0, NULL); /* buddy name renderer */ renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cellview), renderer, TRUE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(cellview), renderer, "markup", BUDDY_NAME_COLUMN, NULL); g_object_set(renderer, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); /* protocol icon renderer */ renderer = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cellview), renderer, FALSE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(cellview), renderer, "pixbuf", BUDDY_PROTO_ICON_COLUMN, NULL); g_object_set(renderer, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); /* status icon renderer */ renderer = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cellview), renderer, FALSE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(cellview), renderer, "pixbuf", BUDDY_STATUS_ICON_COLUMN, NULL); g_object_set(renderer, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); gtk_list_store_append(store, &chat->tipiter); path = gtk_tree_path_new_from_string("0"); gtk_cell_view_set_displayed_row(GTK_CELL_VIEW(cellview), path); gtk_tree_path_free(path); chat->tiplabel = cellview; if (IS_SYSTEM_CHAT(chat)) { buddy = chat->data; hybrid_tooltip_setup(eventbox, NULL, NULL, init_tooltip, buddy); icon_pixbuf = hybrid_create_round_pixbuf(buddy->icon_data, buddy->icon_data_length, 32); presence_pixbuf = hybrid_create_presence_pixbuf(buddy->state, 16); mood_text = g_markup_escape_text(buddy->mood ? buddy->mood : "", -1); name_text = g_strdup_printf( "<b>%s</b>\n<small><span font=\"#8f8f8f\">%s</span></small>", buddy->name && *(buddy->name) != '\0' ? buddy->name : buddy->id, mood_text); gtk_list_store_set(store, &chat->tipiter, BUDDY_ICON_COLUMN, icon_pixbuf, BUDDY_NAME_COLUMN, name_text, BUDDY_STATUS_ICON_COLUMN, presence_pixbuf, -1); g_object_unref(icon_pixbuf); g_object_unref(presence_pixbuf); g_free(name_text); g_free(mood_text); } account = chat->account; proto = account->proto; proto_pixbuf = hybrid_create_proto_icon(proto->info->name, 16); gtk_list_store_set(store, &chat->tipiter, BUDDY_PROTO_ICON_COLUMN, proto_pixbuf, -1); g_object_unref(proto_pixbuf); gtk_box_pack_start(GTK_BOX(vbox), eventbox, FALSE, FALSE, 5); }
/** * Create the tab label widget for the GtkNotebook. * The layout is: * * ----------------------------------------------------- * | Status | | Close Button | * | Icon | buddy name (markup) | | * | (16×16) | | (16×16) | * ----------------------------------------------------- * |- GtkEventBox -> GtkCellView -|--- GtkEventBox ---| */ static GtkWidget* create_note_label(HybridChatWindow *chat) { GtkWidget *hbox; GtkWidget *eventbox; GtkWidget *close_image; GtkWidget *label; GtkListStore *store; GtkCellRenderer *renderer; GtkTreePath *path; HybridBuddy *buddy; GdkPixbuf *icon_pixbuf; g_return_val_if_fail(chat != NULL, NULL); hbox = gtk_hbox_new(FALSE, 0); label = gtk_cell_view_new(); store = gtk_list_store_new(TAB_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING); gtk_cell_view_set_model(GTK_CELL_VIEW(label), GTK_TREE_MODEL(store)); g_object_unref(store); /* buddy icon renderer */ renderer = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(label), renderer, FALSE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(label), renderer, "pixbuf", TAB_STATUS_ICON_COLUMN, NULL); g_object_set(renderer, "yalign", 0.5, "xpad", 3, "ypad", 0, NULL); /* buddy name renderer */ renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(label), renderer, TRUE); gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(label), renderer, "markup", TAB_NAME_COLUMN, NULL); g_object_set(renderer, "xalign", 0.5, "xpad", 6, "ypad", 0, NULL); g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); chat->tablabel = label; gtk_list_store_append(store, &chat->tabiter); path = gtk_tree_path_new_from_string("0"); gtk_cell_view_set_displayed_row(GTK_CELL_VIEW(label), path); gtk_tree_path_free(path); if (IS_SYSTEM_CHAT(chat)) { buddy = chat->data; icon_pixbuf = hybrid_create_presence_pixbuf(buddy->state, 16); gtk_list_store_set(store, &chat->tabiter, TAB_STATUS_ICON_COLUMN, icon_pixbuf, TAB_NAME_COLUMN, buddy->name && *(buddy->name) != '\0' ? buddy->name : buddy->id, -1); g_object_unref(icon_pixbuf); } eventbox = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), FALSE); gtk_container_add(GTK_CONTAINER(eventbox), label); gtk_box_pack_start(GTK_BOX(hbox), eventbox, TRUE, TRUE, 0); gtk_widget_add_events(eventbox, GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect(G_OBJECT(eventbox), "button-press-event", G_CALLBACK(tab_press_cb), chat); /* close button */ eventbox = gtk_event_box_new(); gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), FALSE); close_image = gtk_image_new_from_file(PIXMAPS_DIR"menus/close.png"); g_signal_connect(G_OBJECT(eventbox), "button-press-event", G_CALLBACK(tab_close_press_cb), chat); gtk_container_add(GTK_CONTAINER(eventbox), close_image); gtk_box_pack_start(GTK_BOX(hbox), eventbox, FALSE, FALSE, 0); gtk_widget_show_all(hbox); return hbox; }
int main (int argc, char **argv) { GtkWidget *window, *cellview, *mainbox; GtkWidget *combobox, *comboboxtext, *comboboxgrid; GtkWidget *tmp, *boom; GtkCellRenderer *renderer; GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; GdkRGBA color; GtkCellArea *area; gchar *text; gint i; gtk_init (&argc, &argv); if (g_getenv ("RTL")) gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL); if (g_getenv ("LISTMODE")) { GtkCssProvider *provider = gtk_css_provider_new (); gtk_css_provider_load_from_data (provider, "* { -GtkComboBox-appears-as-list: true; }", -1, NULL); gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_FALLBACK); } window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (window), 5); g_signal_connect (window, "destroy", gtk_main_quit, NULL); mainbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); gtk_container_add (GTK_CONTAINER (window), mainbox); /* GtkCellView */ tmp = gtk_frame_new ("GtkCellView"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); cellview = gtk_cell_view_new (); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), renderer, FALSE); g_object_set (renderer, "icon-name", "dialog-warning", NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), renderer, TRUE); g_object_set (renderer, "text", "la la la", NULL); gtk_container_add (GTK_CONTAINER (boom), cellview); /* GtkComboBox list */ tmp = gtk_frame_new ("GtkComboBox (list)"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_list_blaat (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "icon-name", 0, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), is_separator, NULL, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); /* GtkComboBox dynamic list */ tmp = gtk_frame_new ("GtkComboBox (dynamic list)"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_empty_list_blaat (); combobox = gtk_combo_box_new_with_model (model); g_signal_connect (combobox, "notify::popup-shown", G_CALLBACK (populate_list_blaat), combobox); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "icon-name", 0, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), is_separator, NULL, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); /* GtkComboBox custom entry */ tmp = gtk_frame_new ("GtkComboBox (custom)"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_list_blaat (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "icon-name", 0, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), is_separator, NULL, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); tmp = gtk_cell_view_new (); gtk_widget_show (tmp); gtk_cell_view_set_model (GTK_CELL_VIEW (tmp), model); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (tmp), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (tmp), renderer, "text", 1, NULL); color.red = 1.0; color.blue = 1.0; color.green = 0; color.alpha = 1.0; gtk_cell_view_set_background_rgba (GTK_CELL_VIEW (tmp), &color); displayed_row_changed (GTK_COMBO_BOX (combobox), GTK_CELL_VIEW (tmp)); g_signal_connect (combobox, "changed", G_CALLBACK (displayed_row_changed), tmp); gtk_container_add (GTK_CONTAINER (combobox), tmp); /* GtkComboBox tree */ tmp = gtk_frame_new ("GtkComboBox (tree)"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_tree_blaat (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "icon-name", 0, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, set_sensitive, NULL, NULL); gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combobox), is_separator, NULL, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); #if 0 g_timeout_add (1000, (GSourceFunc) animation_timer, model); #endif /* GtkComboBox (grid mode) */ tmp = gtk_frame_new ("GtkComboBox (grid mode)"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); comboboxgrid = create_combo_box_grid_demo (); gtk_box_pack_start (GTK_BOX (boom), comboboxgrid, FALSE, FALSE, 0); /* GtkComboBoxEntry */ tmp = gtk_frame_new ("GtkComboBox with entry"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); comboboxtext = gtk_combo_box_text_new_with_entry (); setup_combo_entry (GTK_COMBO_BOX_TEXT (comboboxtext)); gtk_container_add (GTK_CONTAINER (boom), comboboxtext); /* Phylogenetic tree */ tmp = gtk_frame_new ("What are you ?"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_phylogenetic_tree (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 0, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); /* Capitals */ tmp = gtk_frame_new ("Where are you ?"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_capital_tree (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 0, NULL); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combobox), renderer, capital_sensitive, NULL, NULL); path = gtk_tree_path_new_from_indices (0, 8, -1); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_path_free (path); gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combobox), &iter); #if 1 gdk_threads_add_timeout (1000, (GSourceFunc) capital_animation, model); #endif /* Aligned Food */ tmp = gtk_frame_new ("Hungry ?"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_food_list (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (combobox)); renderer = gtk_cell_renderer_text_new (); gtk_cell_area_add_with_properties (area, renderer, "align", TRUE, "expand", TRUE, NULL); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 0, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_area_add_with_properties (area, renderer, "align", TRUE, "expand", TRUE, NULL); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 1, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); /* Ellipsizing growing combos */ tmp = gtk_frame_new ("Unconstrained Menu"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (boom), 5); gtk_container_add (GTK_CONTAINER (tmp), boom); model = create_list_long (); combobox = gtk_combo_box_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (boom), combobox); renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, "text", 0, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); gtk_combo_box_set_popup_fixed_width (GTK_COMBO_BOX (combobox), FALSE); tmp = gtk_frame_new ("Looong"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); combobox = gtk_combo_box_text_new (); for (i = 0; i < 200; i++) { text = g_strdup_printf ("Item %d", i); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combobox), text); g_free (text); } gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 53); gtk_container_add (GTK_CONTAINER (tmp), combobox); gtk_widget_show_all (window); gtk_main (); return 0; }
int add_interface(GtkWidget *button, gpointer data) { fwnet_interface_t *newinterface = NULL; GtkWidget *cellview; GdkPixbuf *connectimg; char *ptr=NULL; char *nettype=NULL; char *iface=NULL; GtkTreeIter iter; GtkTreeModel *model; gtk_combo_box_get_active_iter(GTK_COMBO_BOX(intercombo), &iter); model = gtk_combo_box_get_model(GTK_COMBO_BOX(intercombo)); gtk_tree_model_get (model, &iter, 0, &iface, -1); int i; for(i=0;i<g_list_length(interfaceslist); i+=2) { if(!strcmp((char*)g_list_nth_data(interfaceslist, i), iface)) { fwife_error("This interface has been already configured!"); return -1; } } if((newinterface = (fwnet_interface_t*)malloc(sizeof(fwnet_interface_t))) == NULL) return(-1); memset(newinterface, 0, sizeof(fwnet_interface_t)); snprintf(newinterface->name, IF_NAMESIZE, iface); nettype = ask_nettype(); if(nettype == NULL) return -1; if(strcmp(nettype, "lo")) { interfaceslist = g_list_append(interfaceslist, strdup(iface)); interfaceslist = g_list_append(interfaceslist, newinterface); GtkTreeView *treeview = (GtkTreeView *)data; model = gtk_tree_view_get_model (treeview); cellview = gtk_cell_view_new (); connectimg = gtk_widget_render_icon (cellview, GTK_STOCK_NETWORK, GTK_ICON_SIZE_BUTTON, NULL); gtk_widget_destroy (cellview); gtk_list_store_append (GTK_LIST_STORE (model), &iter); gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_IMAGE, connectimg, COLUMN_NET_NAME, iface, -1); } if(strcmp(nettype, "lo") && fwnet_is_wireless_device(iface)) { switch(fwife_question(_("It seems that this network card has a wireless extension.\n\nConfigure your wireless now?"))) { case GTK_RESPONSE_YES: configure_wireless(newinterface); break; case GTK_RESPONSE_NO: break; } } if(!strcmp(nettype, "dhcp")) { ptr = fwife_entry(_("Set DHCP hostname"), _("Some network providers require that the DHCP hostname be\n" "set in order to connect.\n If so, they'll have assigned a hostname to your machine.\n If you were" "assigned a DHCP hostname, please enter it below.\n If you do not have a DHCP hostname, just" "hit enter."), NULL); if(strlen(ptr)) snprintf(newinterface->dhcp_opts, PATH_MAX, "-t 10 -h %s\n", ptr); else newinterface->dhcp_opts[0]='\0'; newinterface->options = g_list_append(newinterface->options, strdup("dhcp")); gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_IP, "dhcp", COLUMN_NET_NAMESERV, ptr, -1); FREE(ptr); } else if(!strcmp(nettype, "static")) { configure_static(newinterface, iter); } return 0; }