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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iconview.c

?? linux下電話本所依賴的一些圖形庫
?? C
字號:
/* Icon View * * The GtkIconView widget is used to display and manipulate icons.  It * uses a GtkTreeModel for data storage, so the list store example * might be helpful. */#include <gtk/gtk.h>#include <string.h>#include "demo-common.h"static GtkWidget *window = NULL;#define FOLDER_NAME "gnome-fs-directory.png"#define FILE_NAME "gnome-fs-regular.png"enum{  COL_PATH,  COL_DISPLAY_NAME,  COL_PIXBUF,  COL_IS_DIRECTORY,  NUM_COLS};static GdkPixbuf *file_pixbuf, *folder_pixbuf;gchar *parent;GtkToolItem *up_button;/* Loads the images for the demo and returns whether the operation succeeded */static gbooleanload_pixbufs (GError **error){  char *filename;  if (file_pixbuf)    return TRUE; /* already loaded earlier */  /* demo_find_file() looks in the the current directory first,   * so you can run gtk-demo without installing GTK, then looks   * in the location where the file is installed.   */  filename = demo_find_file (FILE_NAME, error);  if (!filename)    return FALSE; /* note that "error" was filled in and returned */  file_pixbuf = gdk_pixbuf_new_from_file (filename, error);  g_free (filename);    if (!file_pixbuf)    return FALSE; /* Note that "error" was filled with a GError */    filename = demo_find_file (FOLDER_NAME, error);  if (!filename)    return FALSE; /* note that "error" was filled in and returned */  folder_pixbuf = gdk_pixbuf_new_from_file (filename, error);  g_free (filename);  return TRUE;}static voidfill_store (GtkListStore *store){  GDir *dir;  const gchar *name;  GtkTreeIter iter;    /* First clear the store */  gtk_list_store_clear (store);  /* Now go through the directory and extract all the file   * information */  dir = g_dir_open (parent, 0, NULL);  if (!dir)    return;  name = g_dir_read_name (dir);  while (name != NULL)    {      gchar *path, *display_name;      gboolean is_dir;            /* We ignore hidden files that start with a '.' */      if (name[0] != '.')	{	  path = g_build_filename (parent, name, NULL);	  is_dir = g_file_test (path, G_FILE_TEST_IS_DIR);	  	  display_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL);	  gtk_list_store_append (store, &iter);	  gtk_list_store_set (store, &iter,			      COL_PATH, path,			      COL_DISPLAY_NAME, display_name,			      COL_IS_DIRECTORY, is_dir,			      COL_PIXBUF, is_dir ? folder_pixbuf : file_pixbuf,			      -1);	  g_free (path);	  g_free (display_name);	}      name = g_dir_read_name (dir);          }}static gintsort_func (GtkTreeModel *model,	   GtkTreeIter  *a,	   GtkTreeIter  *b,	   gpointer      user_data){  gboolean is_dir_a, is_dir_b;  gchar *name_a, *name_b;  int ret;  /* We need this function because we want to sort   * folders before files.   */    gtk_tree_model_get (model, a,		      COL_IS_DIRECTORY, &is_dir_a,		      COL_DISPLAY_NAME, &name_a,		      -1);  gtk_tree_model_get (model, b,		      COL_IS_DIRECTORY, &is_dir_b,		      COL_DISPLAY_NAME, &name_b,		      -1);  if (!is_dir_a && is_dir_b)    ret = 1;  else if (is_dir_a && !is_dir_b)    ret = -1;  else    {      ret = g_utf8_collate (name_a, name_b);    }  g_free (name_a);  g_free (name_b);  return ret;}GtkListStore *create_store (void){  GtkListStore *store;  store = gtk_list_store_new (NUM_COLS,			      G_TYPE_STRING, 			      G_TYPE_STRING, 			      GDK_TYPE_PIXBUF,			      G_TYPE_BOOLEAN);  /* Set sort column and function */   gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (store),					   sort_func,					   NULL, NULL);  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),					GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,					GTK_SORT_ASCENDING);  return store;}static voiditem_activated (GtkIconView *icon_view,		GtkTreePath *tree_path,		gpointer     user_data){  GtkListStore *store;  gchar *path;  GtkTreeIter iter;  gboolean is_dir;    store = GTK_LIST_STORE (user_data);  gtk_tree_model_get_iter (GTK_TREE_MODEL (store),			   &iter, tree_path);  gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,		      COL_PATH, &path,		      COL_IS_DIRECTORY, &is_dir,		      -1);  if (!is_dir)    {      g_free (path);      return;    }    /* Replace parent with path and re-fill the model*/  g_free (parent);  parent = path;  fill_store (store);  /* Sensitize the up button */  gtk_widget_set_sensitive (GTK_WIDGET (up_button), TRUE);}static voidup_clicked (GtkToolItem *item,	    gpointer     user_data){  GtkListStore *store;  gchar *dir_name;  store = GTK_LIST_STORE (user_data);  dir_name = g_path_get_dirname (parent);  g_free (parent);    parent = dir_name;  fill_store (store);  /* Maybe de-sensitize the up button */  gtk_widget_set_sensitive (GTK_WIDGET (up_button),			    strcmp (parent, "/") != 0);}static voidhome_clicked (GtkToolItem *item,	      gpointer     user_data){  GtkListStore *store;  store = GTK_LIST_STORE (user_data);  g_free (parent);  parent = g_strdup (g_get_home_dir ());  fill_store (store);  /* Sensitize the up button */  gtk_widget_set_sensitive (GTK_WIDGET (up_button),			    TRUE);}GtkWidget *do_iconview (GtkWidget *do_widget){  if (!window)    {      GError *error;                  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_window_set_default_size (GTK_WINDOW (window), 650, 400);            gtk_window_set_screen (GTK_WINDOW (window),			     gtk_widget_get_screen (do_widget));      gtk_window_set_title (GTK_WINDOW (window), "GtkIconView demo");      g_signal_connect (window, "destroy",			G_CALLBACK (gtk_widget_destroyed), &window);      error = NULL;      if (!load_pixbufs (&error))	{	  GtkWidget *dialog;	  dialog = gtk_message_dialog_new (GTK_WINDOW (window),					   GTK_DIALOG_DESTROY_WITH_PARENT,					   GTK_MESSAGE_ERROR,					   GTK_BUTTONS_CLOSE,					   "Failed to load an image: %s",					   error->message);	  g_error_free (error);	  g_signal_connect (dialog, "response",			    G_CALLBACK (gtk_widget_destroy), NULL);	  gtk_widget_show (dialog);	}      else	{	  GtkWidget *sw;	  GtkWidget *icon_view;	  GtkListStore *store;	  GtkWidget *vbox;	  GtkWidget *tool_bar;	  GtkToolItem *home_button;	  	  vbox = gtk_vbox_new (FALSE, 0);	  gtk_container_add (GTK_CONTAINER (window), vbox);	  tool_bar = gtk_toolbar_new ();	  gtk_box_pack_start (GTK_BOX (vbox), tool_bar, FALSE, FALSE, 0);	  	  up_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_UP);	  gtk_tool_item_set_is_important (up_button, TRUE);	  gtk_widget_set_sensitive (GTK_WIDGET (up_button), FALSE);	  gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), up_button, -1);	  home_button = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);	  gtk_tool_item_set_is_important (home_button, TRUE);	  gtk_toolbar_insert (GTK_TOOLBAR (tool_bar), home_button, -1);	  	  	  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 the store and fill it with the contents of '/' */	  parent = g_strdup ("/");	  store = create_store ();	  fill_store (store);	  icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store));	  gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view),					    GTK_SELECTION_MULTIPLE);	  g_object_unref (store);	  	  /* Connect to the "clicked" signal of the "Up" tool button */	  g_signal_connect (up_button, "clicked",			    G_CALLBACK (up_clicked), store);	  /* Connect to the "clicked" signal of the "Home" tool button */	  g_signal_connect (home_button, "clicked",			    G_CALLBACK (home_clicked), store);	  	  /* We now set which model columns that correspont to the text	   * and pixbuf of each item	   */	  gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), COL_DISPLAY_NAME);	  gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), COL_PIXBUF);	  /* Connect to the "item_activated" signal */	  g_signal_connect (icon_view, "item_activated",			    G_CALLBACK (item_activated), store);	  gtk_container_add (GTK_CONTAINER (sw), icon_view);	  gtk_widget_grab_focus (icon_view);	}    }    if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show_all (window);  else    {      gtk_widget_destroy (window);      window = NULL;    }  return window;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩另类国产亚洲欧美一级| 日韩欧美三级在线| 欧美一卡二卡在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲日本在线看| 国产一区二区三区香蕉| 欧美色视频一区| 国产精品网曝门| 狠狠狠色丁香婷婷综合激情 | 国产真实乱子伦精品视频| 色综合天天综合在线视频| 2欧美一区二区三区在线观看视频| 亚洲国产日韩一级| 成人sese在线| 国产人成亚洲第一网站在线播放| 青椒成人免费视频| 欧美羞羞免费网站| 日韩美女啊v在线免费观看| 成人综合婷婷国产精品久久蜜臀| 国产成人在线看| 91麻豆精品国产自产在线观看一区| 中文字幕乱码久久午夜不卡 | 久久综合五月天婷婷伊人| 一区av在线播放| 成人毛片视频在线观看| 欧美精品一区视频| 麻豆91精品91久久久的内涵| 在线不卡一区二区| 五月天国产精品| 欧美日韩大陆一区二区| 亚洲成av人影院| 欧美日韩情趣电影| 亚洲国产成人va在线观看天堂| 97久久精品人人做人人爽| 国产精品色在线观看| 成人av综合在线| 中文字幕中文字幕一区| 成人97人人超碰人人99| 国产精品入口麻豆九色| 成人av在线电影| 国产精品国产三级国产aⅴ中文| 不卡av电影在线播放| 成人免费在线视频| 日本高清免费不卡视频| 亚洲午夜激情av| 欧美日韩1区2区| 精品在线亚洲视频| 国产午夜精品久久久久久久 | 欧美日韩一区二区在线观看| 夜夜爽夜夜爽精品视频| 91麻豆精品国产91久久久久久久久| 亚瑟在线精品视频| 欧美一区二区三区在| 国产一区二区按摩在线观看| 国产精品久久久久久久裸模| 日本韩国精品在线| 日韩中文字幕1| 久久久欧美精品sm网站| 97se亚洲国产综合自在线不卡| 一级精品视频在线观看宜春院| 91精品国产高清一区二区三区蜜臀 | 国产永久精品大片wwwapp| 777久久久精品| 狠狠色狠狠色合久久伊人| 亚洲国产高清在线| 欧美色电影在线| 精品一区二区综合| 国产精品人人做人人爽人人添 | 国产乱码精品一区二区三区五月婷| 精品国精品国产尤物美女| 国产99精品国产| 亚洲一区二区四区蜜桃| 亚洲精品在线观| 色狠狠一区二区三区香蕉| 日本伊人午夜精品| 综合欧美一区二区三区| 日韩一级二级三级| 99久久精品国产一区| 日韩高清一级片| 国产精品久久久久9999吃药| 欧美一卡二卡在线| 一本色道久久加勒比精品| 日本va欧美va欧美va精品| 亚洲欧洲精品天堂一级| 日韩视频永久免费| 91麻豆国产自产在线观看| 另类人妖一区二区av| 亚洲乱码精品一二三四区日韩在线| 日韩免费电影网站| 欧美日韩精品一区二区三区四区 | 国产精品三级电影| 日韩亚洲欧美一区二区三区| 色偷偷久久一区二区三区| 国产精品综合一区二区| 亚洲电影中文字幕在线观看| 一色屋精品亚洲香蕉网站| 2021久久国产精品不只是精品| 欧美军同video69gay| 91网站视频在线观看| 国产精品亚洲综合一区在线观看| 五月婷婷久久丁香| 亚洲一区二区三区影院| 亚洲欧美色图小说| 最新国产精品久久精品| 欧美韩国日本一区| 久久精品视频在线看| 日韩精品一区二区三区中文精品| 欧美伊人久久久久久午夜久久久久| av成人免费在线| 国产精品羞羞答答xxdd| 国产麻豆成人精品| 激情深爱一区二区| 精品一区二区三区欧美| 美日韩黄色大片| 免费三级欧美电影| 日韩av不卡在线观看| 日韩va欧美va亚洲va久久| 免费成人你懂的| 蜜臀av一区二区| 国产乱人伦精品一区二区在线观看 | 日韩免费电影网站| 欧美变态tickle挠乳网站| 日韩欧美国产电影| 欧美猛男gaygay网站| 亚洲免费看黄网站| 亚洲欧美视频在线观看| 亚洲私人黄色宅男| 亚洲精品一二三| 亚洲一区二区三区免费视频| 亚洲综合久久久| 婷婷六月综合网| 免费在线成人网| 精品一区二区三区免费视频| 国产米奇在线777精品观看| 国产美女久久久久| 成人综合激情网| 一本一本大道香蕉久在线精品| 色综合天天综合| 欧美性生交片4| 日韩视频不卡中文| 久久天天做天天爱综合色| 国产精品丝袜黑色高跟| 亚洲精品国产精品乱码不99| 无吗不卡中文字幕| 国产精品综合二区| 色网综合在线观看| 欧美一区二区高清| 国产日韩三级在线| 亚洲一区二区三区中文字幕| 老汉av免费一区二区三区| 成人动漫在线一区| 欧美久久免费观看| 国产精品美女久久久久高潮| 亚洲一区在线观看免费| 精品一区二区三区在线播放视频 | 久久精品国产99| 国产69精品一区二区亚洲孕妇| 色婷婷狠狠综合| 欧美不卡在线视频| 夜夜亚洲天天久久| 国产精品影视在线观看| 欧美天天综合网| 国产精品伦理在线| 国产在线精品一区二区不卡了| 亚洲欧美日韩国产一区二区三区| 亚洲一区二区三区精品在线| 国产一区二区三区最好精华液| 在线免费精品视频| 久久久影视传媒| 亚洲va欧美va人人爽午夜| 成人妖精视频yjsp地址| 欧美日韩aaaaaa| 亚洲色图另类专区| 国产黄色成人av| 欧美一级一区二区| 亚洲尤物视频在线| k8久久久一区二区三区| 欧美成人乱码一区二区三区| 一区二区三区久久| 国产成人在线视频网址| 欧美日韩在线三区| 亚洲欧美偷拍卡通变态| 国产成人在线影院| www亚洲一区| 免费视频一区二区| 欧美日本乱大交xxxxx| 亚洲男女一区二区三区| 成人性生交大片免费看视频在线| 欧美大度的电影原声| 天天影视色香欲综合网老头| 色先锋aa成人| 亚洲女人****多毛耸耸8| 国模冰冰炮一区二区| 欧美日韩中文字幕一区二区| 亚洲国产精品av| 成人免费视频一区| 国产欧美一区二区精品性色| 韩国av一区二区三区在线观看| 日韩一卡二卡三卡四卡| 久久精品72免费观看|