⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gemfilechooser.c.svn-base

📁 一款Linux手机上应用的文件管理器 系统要求就安装Gtk+2.0
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
          gchar *absolute_path=g_strdup_printf("%s/%s",current_path,vfs_file_info->name);          /*add virtual root mechnism*/           int i = 0;          if (!strcmp (current_path, virtual_root))          {            gtk_tree_view_column_set_visible(filechooser->check_box ,FALSE);             for (i = 0; i < VIRTUAL_TOPDIR_COUNT; i++)            {	            if (!strcmp (virtual_topdirs[i].path, vfs_file_info->name))              {                 /* if(vfs_file_info->name)                {                   g_free(vfs_file_info->name);                   vfs_file_info->name = g_strdup(virtual_topdirs[i].alias);                }*/                name = g_strdup(virtual_topdirs[i].alias);                break;              }            }            if(i == VIRTUAL_TOPDIR_COUNT)            {              gnome_vfs_file_info_unref(vfs_file_info);              continue;              }            switch(i)            {               case  MUSIC:                     pixbuf = gdk_pixbuf_ref(icons[MUSIC]);                     break;                                  case  PHOTO:                     pixbuf = gdk_pixbuf_ref(icons[PHOTO]);                     break;               case  VIDEO:                     pixbuf = gdk_pixbuf_ref(icons[VIDEO]);                     break;               case  RINGTONE :                     pixbuf = gdk_pixbuf_ref(icons[RINGTONE]);                     break;               case  SD :                     pixbuf = gdk_pixbuf_ref(icons[SD]);                     break;               case  COLLECTION :                     pixbuf = gdk_pixbuf_ref(icons[COLLECTION]);                     break;               default :                     pixbuf = gdk_pixbuf_ref(icons[NORMAL]);                     break;            }          }//not virtul root          else           /*add  icons  find icons in mime database*/          {            name = g_strdup(vfs_file_info->name);            gchar *mime_icon =  find_mime_icon(vfs_file_info,absolute_path);            pixbuf =  get_pixbuf(mime_icon);          }                    g_free(absolute_path);          pb = gdk_pixbuf_scale_simple (pixbuf, 32, 32, GDK_INTERP_BILINEAR);                   gtk_list_store_append(GTK_LIST_STORE(model), &tree_iter);          if (vfs_file_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)          {            gtk_list_store_set(GTK_LIST_STORE(model),										       		 &tree_iter,											   	  	 GEM_FC_COL_NAME,														   name,															 GEM_FC_COL_PIC,															 pb,															 GEM_FC_COL_IS_FOLDER,															 TRUE,															 GEM_FC_COL_VFS_FILE_INFO,                               vfs_file_info,															 GEM_FC_COL_CHECK_BOX,                               FALSE,															 -1);					}					else					{					  gtk_list_store_set(GTK_LIST_STORE(model),															 &tree_iter,															 GEM_FC_COL_NAME,															 name,															 GEM_FC_COL_PIC,															 pb,															 GEM_FC_COL_IS_FOLDER,															 FALSE,															 GEM_FC_COL_VFS_FILE_INFO,                               vfs_file_info,															 GEM_FC_COL_CHECK_BOX,                               FALSE,															 -1);          }                   }        else        {          gnome_vfs_file_info_unref(vfs_file_info);          continue;            }      }//end of while       /*if open fail*/      if (open_dir_result != GNOME_VFS_OK)      {        gchar * error=NULL;        switch (open_dir_result)	      {          case GNOME_VFS_ERROR_READ_ONLY:	             error = g_strdup (_("Destination is read only."));     	         break;	        case GNOME_VFS_ERROR_ACCESS_DENIED:	             error = g_strdup (_("Access denied."));	             break;	        case GNOME_VFS_ERROR_READ_ONLY_FILE_SYSTEM:	             error = g_strdup (_("Read only file system."));	             break;	        case GNOME_VFS_ERROR_NOT_FOUND:               break;	        case GNOME_VFS_ERROR_GENERIC:	             break;	        default:               error = g_strdup_printf ("%s %s", _("Error:"), gnome_vfs_result_to_string(open_dir_result));	        break;        }        if(error)        {          g_print("%s",error);          g_free (error);        }      }	  }	}	/*	 * log the current path and update	 * tree view cursor to the top line	 */	if (filechooser->current_path != NULL)	{		g_free(filechooser->current_path);	}	filechooser->current_path = g_strdup(current_path);	if (TRUE)	{		GtkWidget * view = NULL;				view = gem_tree_view_get_view(GEM_TREE_VIEW(filechooser));		if (view)		{			GtkTreePath * tree_path = NULL;			GtkTreeViewColumn * col = NULL;						tree_path = gtk_tree_path_new_first();			col = gtk_tree_view_get_column(GTK_TREE_VIEW(view),																		 0);															 			gtk_tree_view_set_cursor(GTK_TREE_VIEW(view),															 tree_path,															 col,															 FALSE);			gtk_tree_path_free(tree_path);		}			}	return;}G_CONST_RETURN gchar *gem_file_chooser_get_current_path (GemFileChooser			*filechooser){  return filechooser->current_path;}voidgem_file_chooser_set_selectable (GemFileChooser			*filechooser,																 gboolean						 selectable){	gboolean sel = gem_file_chooser_get_selectable(filechooser);  if(sel == selectable)  {    return;  }  GtkWidget * treeview = NULL;  const gchar *current_path = NULL;  DBG("set selectable in gemfilechooser");   current_path = gem_file_chooser_get_current_path(filechooser);  if(current_path == NULL)    return;  if (!strcmp (current_path, virtual_root))  {    g_print("%s():System Files Can Be Marked\n",__FUNCTION__);     gtk_tree_view_column_set_visible(filechooser->check_box ,FALSE);     return;  }  else    gtk_tree_view_column_set_visible(filechooser->check_box ,selectable);   /*cusor focus set*/   	if (TRUE)	{		GtkWidget * view = NULL;				view = gem_tree_view_get_view(GEM_TREE_VIEW(filechooser));		if (view)		{			GtkTreePath * tree_path = NULL;			GtkTreeViewColumn * col = NULL;						tree_path = gtk_tree_path_new_first();			if(selectable)        col = gtk_tree_view_get_column(GTK_TREE_VIEW(view),																		 0);			else        col = gtk_tree_view_get_column(GTK_TREE_VIEW(view),																		 1);			gtk_tree_view_set_cursor( GTK_TREE_VIEW(view),															  tree_path,															  col,															  FALSE                              );			gtk_tree_path_free(tree_path);		}	}#if 1  /*set ".." as "select all",and change it's icon*/	GtkTreeModel * model = NULL;  model = gem_tree_view_get_model(GEM_TREE_VIEW(filechooser));  GtkTreeIter *tree_iter = NULL;  gboolean result = gtk_tree_model_get_iter_first(model,&tree_iter);   GdkPixbuf * pixbuf = NULL;	gchar * picpath = NULL;    if(selectable)  {		picpath = g_build_filename(gem_resource_path,																		 "pixmaps",																		 "file_selected.png",																		 NULL);		if (gem_resource_load_pic(picpath,GEM_PIC_NORMAL) == TRUE)		{			pixbuf = gem_resource_find_pic(picpath,GEM_PIC_NORMAL);		}	  gtk_list_store_set( GTK_LIST_STORE(model),												 &tree_iter,												 GEM_FC_COL_PIC,												 pixbuf,												 GEM_FC_COL_NAME,												 "Select All",                         GEM_FC_COL_CHECK,                         FALSE,                         GEM_FC_COL_CHECK_BOX,                         FALSE,                         -1                       );      }  else  {		picpath = g_build_filename(gem_resource_path,																		 "pixmaps",																		 "parent.png",																		 NULL);		if (gem_resource_load_pic(picpath,GEM_PIC_NORMAL) == TRUE)		{			pixbuf = gem_resource_find_pic(picpath,GEM_PIC_NORMAL);		}	  gtk_list_store_set(GTK_LIST_STORE(model),														 &tree_iter,														 GEM_FC_COL_PIC,														 pixbuf,														 GEM_FC_COL_NAME,														 "..",                             -1);    gem_file_chooser_unselect_all(filechooser);    DBG("SSSSSSSSSSSSSSfc=%p................................",filechooser);      }            g_free(picpath);    DBG("SSSSSSSSSSSSSSfc=%p................................",filechooser);#endif    if (filechooser->selectable == selectable)	 {     DBG("SSSSSSSSSSSSSSfc=%p................................",filechooser);     return;	 }   DBG("SSSSSSSSSSSSSSfc=%p................................",filechooser);   DBG("SSSSSSSSSSSSSS");   filechooser->selectable = selectable;	 return;}gbooleangem_file_chooser_get_selectable (GemFileChooser			*filechooser){	return filechooser->selectable;}GList *gem_file_chooser_get_current_selections (GemFileChooser		*filechooser){	GtkTreeModel * model = NULL;	GList * results = NULL;	gint count = 0;	gint i;	model = gem_tree_view_get_model(GEM_TREE_VIEW(filechooser));	if (model == NULL)	{		return results;	}		if (filechooser->selectable == FALSE)	{		GtkWidget * treeview = NULL;		treeview = gem_tree_view_get_view(GEM_TREE_VIEW(filechooser));		if (treeview)		{			GtkTreePath * path = NULL;			gtk_tree_view_get_cursor(GTK_TREE_VIEW(treeview),															 &path,															 NULL);			if (path)			{				GtkTreeIter iter;			  /*if the first then ,return NULL*/        GtkTreePath *root = gtk_tree_path_new_first ();        if (!gtk_tree_path_compare (path, root))        {          return results;        }				if (gtk_tree_model_get_iter(model,																		&iter,																		path) == TRUE)				{					gchar * fname = NULL;          gtk_tree_model_get(GTK_TREE_MODEL(model),														 &iter,														 GEM_FC_COL_NAME,														 &fname,														 -1);									results = g_list_append(results,																	(gpointer)fname);									}				gtk_tree_path_free(path);			}		}				return results;	}	count = gtk_tree_model_iter_n_children(model, NULL);	for (i = 1; i < count; i++)	{		GtkTreeIter iter;						if (gtk_tree_model_iter_nth_child(model,																			&iter,																			NULL,																			i) == TRUE)		{			gchar * fname = NULL;			gboolean selected = FALSE;						gtk_tree_model_get(GTK_TREE_MODEL(model),												 &iter,												 GEM_FC_COL_NAME,												 &fname,												 GEM_FC_COL_CHECK,												 &selected,												 -1);												 			if(selected == TRUE)			{				results = g_list_append(results,																(gpointer)fname);			}					}	}		return results;	}GList *gem_file_chooser_get_current_selections_vfs_file_info (GemFileChooser		*filechooser){	GtkTreeModel * model = NULL;	GList * results = NULL;	gint count = 0;	gint i;	model = gem_tree_view_get_model(GEM_TREE_VIEW(filechooser));	if (model == NULL)	{		return results;	}		if (filechooser->selectable == FALSE)	{		GtkWidget * treeview = NULL;		treeview = gem_tree_view_get_view(GEM_TREE_VIEW(filechooser));		if (treeview)		{			GtkTreePath * path = NULL;			gtk_tree_view_get_cursor(GTK_TREE_VIEW(treeview),															 &path,															 NULL);			if (path)			{				GtkTreeIter iter;								if (gtk_tree_model_get_iter(model,																		&iter,																		path) == TRUE)				{				          GnomeVFSFileInfo *vfs_file_info; /*= gnome_vfs_file_info_new ();*/					gtk_tree_model_get(GTK_TREE_MODEL(model),														 &iter,														 GEM_FC_COL_VFS_FILE_INFO,														 &vfs_file_info,														 -1);									results = g_list_append(results,																	(gpointer)vfs_file_info);									}				gtk_tree_path_free(path);			}		}				return results;	}	count = gtk_tree_model_iter_n_children(model, NULL);	for (i = 1; i < count; i++)	{		GtkTreeIter iter;						if (gtk_tree_model_iter_nth_child(model,																			&iter,																			NULL,																			i) == TRUE)		{			      gboolean selected = FALSE;			      GnomeVFSFileInfo *vfs_file_info; /*= gnome_vfs_file_info_new ();*/			gtk_tree_model_get(GTK_TREE_MODEL(model),												 &iter,												 GEM_FC_COL_VFS_FILE_INFO,												 &vfs_file_info,												 GEM_FC_COL_CHECK,												 &selected,												 -1);												 			if(selected == TRUE)			{				results = g_list_append(results,																(gpointer)vfs_file_info);			}					}	}		return results;	}voidgem_file_chooser_select_all (GemFileChooser		*filechooser){	gem_file_chooser_set_selection_all(filechooser, TRUE);  return;}voidgem_file_chooser_unselect_all (GemFileChooser		*filechooser){	gem_file_chooser_set_selection_all(filechooser, FALSE);  return;}/*vi:ts=2:nowrap:ai:expandtab */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -