亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? editable_cells.c

?? linux下電話本所依賴的一些圖形庫(kù)
?? C
字號(hào):
/* Tree View/Editable Cells * * This demo demonstrates the use of editable cells in a GtkTreeView. If * you're new to the GtkTreeView widgets and associates, look into * the GtkListStore example first. It also shows how to use the * GtkCellRenderer::editing-started signal to do custom setup of the * editable widget. * * The cell renderers used in this demo are GtkCellRendererText,  * GtkCellRendererCombo and GtkCellRendererProgress. */#include <gtk/gtk.h>#include <string.h>#include <stdlib.h>static GtkWidget *window = NULL;typedef struct{  gint   number;  gchar *product;  gint   yummy;}Item;enum{  COLUMN_ITEM_NUMBER,  COLUMN_ITEM_PRODUCT,  COLUMN_ITEM_YUMMY,  NUM_ITEM_COLUMNS};enum{  COLUMN_NUMBER_TEXT,  NUM_NUMBER_COLUMNS};static GArray *articles = NULL;static voidadd_items (void){  Item foo;  g_return_if_fail (articles != NULL);  foo.number = 3;  foo.product = g_strdup ("bottles of coke");  foo.yummy = 20;  g_array_append_vals (articles, &foo, 1);  foo.number = 5;  foo.product = g_strdup ("packages of noodles");  foo.yummy = 50;  g_array_append_vals (articles, &foo, 1);  foo.number = 2;  foo.product = g_strdup ("packages of chocolate chip cookies");  foo.yummy = 90;  g_array_append_vals (articles, &foo, 1);  foo.number = 1;  foo.product = g_strdup ("can vanilla ice cream");  foo.yummy = 60;  g_array_append_vals (articles, &foo, 1);  foo.number = 6;  foo.product = g_strdup ("eggs");  foo.yummy = 10;  g_array_append_vals (articles, &foo, 1);}static GtkTreeModel *create_items_model (void){  gint i = 0;  GtkListStore *model;  GtkTreeIter iter;  /* create array */  articles = g_array_sized_new (FALSE, FALSE, sizeof (Item), 1);  add_items ();  /* create list store */  model = gtk_list_store_new (NUM_ITEM_COLUMNS, G_TYPE_INT, G_TYPE_STRING,                              G_TYPE_INT, G_TYPE_BOOLEAN);  /* add items */  for (i = 0; i < articles->len; i++)    {      gtk_list_store_append (model, &iter);      gtk_list_store_set (model, &iter,                          COLUMN_ITEM_NUMBER,                          g_array_index (articles, Item, i).number,                          COLUMN_ITEM_PRODUCT,                          g_array_index (articles, Item, i).product,                          COLUMN_ITEM_YUMMY,                          g_array_index (articles, Item, i).yummy,                          -1);    }  return GTK_TREE_MODEL (model);}static GtkTreeModel *create_numbers_model (void){#define N_NUMBERS 10  gint i = 0;  GtkListStore *model;  GtkTreeIter iter;  /* create list store */  model = gtk_list_store_new (NUM_NUMBER_COLUMNS, G_TYPE_STRING, G_TYPE_INT);  /* add numbers */  for (i = 0; i < N_NUMBERS; i++)    {      char str[2] = { '0' + i, '\0' };      gtk_list_store_append (model, &iter);      gtk_list_store_set (model, &iter,                          COLUMN_NUMBER_TEXT, str,                          -1);    }  return GTK_TREE_MODEL (model);#undef N_NUMBERS}static voidadd_item (GtkWidget *button, gpointer data){  Item foo;  GtkTreeIter iter;  GtkTreeModel *model = (GtkTreeModel *)data;  g_return_if_fail (articles != NULL);  foo.number = 0;  foo.product = g_strdup ("Description here");  foo.yummy = 50;  g_array_append_vals (articles, &foo, 1);  gtk_list_store_append (GTK_LIST_STORE (model), &iter);  gtk_list_store_set (GTK_LIST_STORE (model), &iter,                      COLUMN_ITEM_NUMBER, foo.number,                      COLUMN_ITEM_PRODUCT, foo.product,                      COLUMN_ITEM_YUMMY, foo.yummy,                      -1);}static voidremove_item (GtkWidget *widget, gpointer data){  GtkTreeIter iter;  GtkTreeView *treeview = (GtkTreeView *)data;  GtkTreeModel *model = gtk_tree_view_get_model (treeview);  GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview);  if (gtk_tree_selection_get_selected (selection, NULL, &iter))    {      gint i;      GtkTreePath *path;      path = gtk_tree_model_get_path (model, &iter);      i = gtk_tree_path_get_indices (path)[0];      gtk_list_store_remove (GTK_LIST_STORE (model), &iter);      g_array_remove_index (articles, i);      gtk_tree_path_free (path);    }}static gbooleanseparator_row (GtkTreeModel *model,               GtkTreeIter  *iter,               gpointer      data){  GtkTreePath *path;  gint idx;  path = gtk_tree_model_get_path (model, iter);  idx = gtk_tree_path_get_indices (path)[0];  gtk_tree_path_free (path);  return idx == 5;}static voidediting_started (GtkCellRenderer *cell,                 GtkCellEditable *editable,                 const gchar     *path,                 gpointer         data){  gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),                                         separator_row, NULL, NULL);}static voidcell_edited (GtkCellRendererText *cell,             const gchar         *path_string,             const gchar         *new_text,             gpointer             data){  GtkTreeModel *model = (GtkTreeModel *)data;  GtkTreePath *path = gtk_tree_path_new_from_string (path_string);  GtkTreeIter iter;  gint column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (cell), "column"));  gtk_tree_model_get_iter (model, &iter, path);  switch (column)    {    case COLUMN_ITEM_NUMBER:      {        gint i;        i = gtk_tree_path_get_indices (path)[0];        g_array_index (articles, Item, i).number = atoi (new_text);        gtk_list_store_set (GTK_LIST_STORE (model), &iter, column,                            g_array_index (articles, Item, i).number, -1);      }      break;    case COLUMN_ITEM_PRODUCT:      {        gint i;        gchar *old_text;        gtk_tree_model_get (model, &iter, column, &old_text, -1);        g_free (old_text);        i = gtk_tree_path_get_indices (path)[0];        g_free (g_array_index (articles, Item, i).product);        g_array_index (articles, Item, i).product = g_strdup (new_text);        gtk_list_store_set (GTK_LIST_STORE (model), &iter, column,                            g_array_index (articles, Item, i).product, -1);      }      break;    }  gtk_tree_path_free (path);}static voidadd_columns (GtkTreeView  *treeview,              GtkTreeModel *items_model,             GtkTreeModel *numbers_model){  GtkCellRenderer *renderer;  /* number column */  renderer = gtk_cell_renderer_combo_new ();  g_object_set (renderer,                "model", numbers_model,                "text-column", COLUMN_NUMBER_TEXT,                "has-entry", FALSE,                "editable", TRUE,                NULL);  g_signal_connect (renderer, "edited",                    G_CALLBACK (cell_edited), items_model);  g_signal_connect (renderer, "editing-started",                    G_CALLBACK (editing_started), NULL);  g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER (COLUMN_ITEM_NUMBER));  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),                                               -1, "Number", renderer,                                               "text", COLUMN_ITEM_NUMBER,                                               NULL);  /* product column */  renderer = gtk_cell_renderer_text_new ();  g_object_set (renderer,                "editable", TRUE,                NULL);  g_signal_connect (renderer, "edited",                    G_CALLBACK (cell_edited), items_model);  g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER (COLUMN_ITEM_PRODUCT));  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),                                               -1, "Product", renderer,                                               "text", COLUMN_ITEM_PRODUCT,                                               NULL);  /* yummy column */  renderer = gtk_cell_renderer_progress_new ();  g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER (COLUMN_ITEM_YUMMY));  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),                                               -1, "Yummy", renderer,                                               "value", COLUMN_ITEM_YUMMY,                                               NULL);  }GtkWidget *do_editable_cells (GtkWidget *do_widget){  if (!window)    {      GtkWidget *vbox;      GtkWidget *hbox;      GtkWidget *sw;      GtkWidget *treeview;      GtkWidget *button;      GtkTreeModel *items_model;      GtkTreeModel *numbers_model;      /* create window, etc */      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_window_set_screen (GTK_WINDOW (window),                             gtk_widget_get_screen (do_widget));      gtk_window_set_title (GTK_WINDOW (window), "Shopping list");      gtk_container_set_border_width (GTK_CONTAINER (window), 5);      g_signal_connect (window, "destroy",                        G_CALLBACK (gtk_widget_destroyed), &window);      vbox = gtk_vbox_new (FALSE, 5);      gtk_container_add (GTK_CONTAINER (window), vbox);      gtk_box_pack_start (GTK_BOX (vbox),                          gtk_label_new ("Shopping list (you can edit the cells!)"),                          FALSE, FALSE, 0);      sw = gtk_scrolled_window_new (NULL, NULL);      gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),                                           GTK_SHADOW_ETCHED_IN);      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),                                      GTK_POLICY_AUTOMATIC,                                      GTK_POLICY_AUTOMATIC);      gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);      /* create models */      items_model = create_items_model ();      numbers_model = create_numbers_model ();      /* create tree view */      treeview = gtk_tree_view_new_with_model (items_model);      gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);      gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),                                   GTK_SELECTION_SINGLE);      add_columns (GTK_TREE_VIEW (treeview), items_model, numbers_model);      g_object_unref (numbers_model);      g_object_unref (items_model);      gtk_container_add (GTK_CONTAINER (sw), treeview);      /* some buttons */      hbox = gtk_hbox_new (TRUE, 4);      gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);      button = gtk_button_new_with_label ("Add item");      g_signal_connect (button, "clicked",                        G_CALLBACK (add_item), items_model);      gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);      button = gtk_button_new_with_label ("Remove item");      g_signal_connect (button, "clicked",                        G_CALLBACK (remove_item), treeview);      gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);      gtk_window_set_default_size (GTK_WINDOW (window), 320, 200);    }  if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show_all (window);  else    {      gtk_widget_destroy (window);      window = NULL;    }  return window;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人aaaa免费全部观看| 精品一区二区影视| 色综合一区二区| 国产精品伦一区| 懂色av一区二区在线播放| 久久久蜜臀国产一区二区| 国产一区二区三区综合| 日韩欧美在线不卡| 免费观看在线综合色| 欧美一区二区三区白人| 男女激情视频一区| 精品粉嫩aⅴ一区二区三区四区| 蜜桃视频一区二区| 精品国内片67194| 国内精品伊人久久久久av影院| 2024国产精品视频| 国产乱理伦片在线观看夜一区| 国产喂奶挤奶一区二区三区| 国产99久久久国产精品潘金| 亚洲国产精品ⅴa在线观看| 成人性生交大片免费| 日韩美女精品在线| 欧美综合色免费| 天天色综合天天| 欧美一区二区三区思思人| 九一久久久久久| 日本一区二区高清| 91免费看视频| 视频在线观看91| 精品免费99久久| 成人丝袜18视频在线观看| 中文字幕日本乱码精品影院| 91久久精品日日躁夜夜躁欧美| 亚洲国产精品一区二区www| 欧美另类videos死尸| 国内外成人在线| 最新成人av在线| 欧美日韩国产天堂| 久久99国产精品成人| 国产拍欧美日韩视频二区| 99国产精品久久久久久久久久 | 久久久久久久久久久99999| 成人性视频网站| 亚洲午夜久久久| 欧美成人aa大片| 成人精品视频一区二区三区尤物| 亚洲乱码中文字幕综合| 欧美精品精品一区| 国内精品免费在线观看| 最新国产の精品合集bt伙计| 欧美酷刑日本凌虐凌虐| 国产在线观看一区二区| 亚洲日本一区二区| 欧美一区二区福利在线| 丁香婷婷综合激情五月色| 亚洲精品久久7777| 精品国产乱码91久久久久久网站| 不卡一区二区三区四区| 日韩中文字幕不卡| 欧美激情一区二区三区全黄| 欧美在线不卡视频| 国产精品一区三区| 亚洲国产美国国产综合一区二区| 精品不卡在线视频| 欧美性大战久久| 国产精品一区二区久久精品爱涩 | 一区二区在线看| 精品国产sm最大网站免费看| 91丨porny丨国产入口| 日本大胆欧美人术艺术动态 | 亚洲精品一二三区| 日韩欧美在线一区二区三区| 色综合久久久网| 久久国产精品一区二区| 亚洲精品国产高清久久伦理二区| 欧美成人性福生活免费看| 色婷婷av一区二区三区之一色屋| 精品影视av免费| 亚洲丰满少妇videoshd| 国产午夜一区二区三区| 在线综合+亚洲+欧美中文字幕| 99久久综合色| 国产一区二区伦理| 日精品一区二区| 亚洲激情六月丁香| 日本一区二区高清| 精品国产欧美一区二区| 欧美影视一区在线| jiyouzz国产精品久久| 国产一区在线精品| 美女在线视频一区| 亚洲一区免费在线观看| 亚洲欧洲性图库| 久久精品一区蜜桃臀影院| 欧美一区二区三区免费在线看 | 高清shemale亚洲人妖| 免费看黄色91| 五月婷婷激情综合网| 亚洲欧美一区二区久久| 中文字幕电影一区| 久久久久久免费| 精品少妇一区二区三区免费观看 | 天天影视网天天综合色在线播放| 18成人在线观看| 欧美国产日韩a欧美在线观看 | 欧美日韩高清在线播放| 91香蕉视频黄| 成人动漫在线一区| 国产盗摄一区二区| 国产一区欧美一区| 另类中文字幕网| 日韩成人午夜精品| 首页亚洲欧美制服丝腿| 亚洲成av人片在www色猫咪| 伊人性伊人情综合网| 综合亚洲深深色噜噜狠狠网站| 欧美韩国日本不卡| 国产午夜精品一区二区三区四区| 亚洲精品一区二区在线观看| 日韩精品一区二区三区老鸭窝 | 欧美性xxxxxx少妇| 欧美在线免费播放| 日本精品免费观看高清观看| 99re这里只有精品视频首页| 成人国产亚洲欧美成人综合网| 丰满少妇久久久久久久| 成人中文字幕合集| 成人免费视频网站在线观看| 国产激情精品久久久第一区二区 | 不卡电影一区二区三区| 成人一道本在线| 成人av在线资源网| 波多野结衣的一区二区三区| 99热国产精品| 91久久精品日日躁夜夜躁欧美| 日本精品视频一区二区| 欧美午夜一区二区| 欧美日韩一区二区欧美激情| 欧美肥妇bbw| 日韩精品一区二区三区四区视频| 欧美成人激情免费网| 欧美mv日韩mv| 日本一区二区久久| 1区2区3区精品视频| 一区二区三区日韩精品| 亚洲成a天堂v人片| 青娱乐精品视频| 国产一区啦啦啦在线观看| 国产69精品一区二区亚洲孕妇 | 高清久久久久久| 91在线国内视频| 在线观看日韩高清av| 欧美日韩激情一区二区三区| 日韩免费福利电影在线观看| 久久精品亚洲精品国产欧美kt∨| 中文字幕精品综合| 亚洲精品高清在线| 日本午夜精品一区二区三区电影 | 欧美性受xxxx黑人xyx性爽| 欧美网站一区二区| 日韩欧美电影一区| 国产三区在线成人av| 亚洲欧美成人一区二区三区| 亚洲福利视频一区二区| 经典一区二区三区| 成人激情文学综合网| 在线精品视频一区二区三四| 3atv一区二区三区| 国产日韩欧美在线一区| 亚洲精品综合在线| 美国毛片一区二区三区| 国产.欧美.日韩| 精品视频在线看| 久久久综合视频| 中文av一区二区| 亚洲国产精品久久不卡毛片| 极品少妇一区二区三区精品视频| 成人理论电影网| 欧美日本不卡视频| 国产拍揄自揄精品视频麻豆| 亚洲已满18点击进入久久| 国内成人精品2018免费看| 色婷婷综合久久| 欧美成人video| 亚洲女同女同女同女同女同69| 日产欧产美韩系列久久99| 成人一级片在线观看| 91麻豆精品国产91久久久久久| 日本一区二区三区在线观看| 五月婷婷色综合| 成人的网站免费观看| 欧美精品在线观看一区二区| 一区二区三区在线视频观看| 激情久久五月天| 91高清在线观看| 久久精品无码一区二区三区| 亚洲成人av在线电影| 成人精品国产福利| 欧美一区二区私人影院日本| 中文字幕一区二区三区视频|