The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Advanced usage

The GtkRecentChooser widgets might display items sorted and filtered, either with already supplied or custom sorting and filtering functions. The biggest difference from the EggRecentView widgets in EggRecent is that the GtkRecentChooser widgets will use their own copy of the list and will apply the sorting and filtering functions only on the copy; this allows the creation of many viewers with a single controller, like using many GtkTreeView with a single GtkTreeModel instance.

Available sorting methods are:

        /* no sorting */
	gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_NONE);
	
        /* most recently used first */
	gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_MRU);
	
	/* most recently used last */
	gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_LRU);
      

You can create your own sorting function, and the use the GTK_RECENT_SORT_CUSTOM method:

	/* custom sorting function, based on the registration count
	 * (most used first)
	 */
	static void
	sort_by_usage_count (GtkRecentInfo *a,
                             GtkRecentInfo *b,
                             gpointer       data)
        {
	  gint count_a, count_b;

	  count_a = count_b = 0;

	  if (gtk_recent_info_has_application (a, APP_NAME))
	    gtk_recent_info_get_application_info (a, APP_NAME, NULL, &count_a, NULL);

	  if (gtk_recent_info_has_application (b, APP_NAME))
	    gtk_recent_info_get_application_info (b, APP_NAME, NULL, &count_b, NULL);

	  return count_a < count_b;
	}

	...

	  /* set custom sorting and set the custom sorting function */
	  gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser),
	                                    GTK_RECENT_SORT_CUSTOM);
	  gtk_recent_chooser_set_sort_func (GTK_RECENT_CHOOSER,
	                                    sort_by_usage_count,
			  		    NULL, /* sort function data */
					    NULL  /* destroy notify for the data */);
      

Filtering is done using the GtkRecentFilter object, similar to the GtkFileFilter object used by the GtkFileChooser widgets. The GtkRecentFilter object has a set of pre-defined options based on the meta-data exposed by the GtkRecentInfo object. It also allows custom filtering function:

        GtkRecentFilter *filter;

	filter = gtk_recent_filter_new ();
	
	/* set the user visible name of the filter */
	gtk_recent_filter_set_name (filter, "Since Last Month");

	/* set the maximum age of a recently used document */
	gtk_recent_filter_set_age (filter, 31);

	/* the chooser takes the ownership of the object */
	gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (chooser), filter);

	/* set the currently used filter */
	gtk_recent_chooser_set_filter (GTK_RECENT_CHOOSER (chooser), filter);

	filter = gtk_recent_filter_new ();
	gtk_recent_filter_set_name (filter, "Every text file");
	gtk_recent_filter_set_mime_type (filter, "text/plain");

	gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (chooser), filter);
      

The GtkRecentChooserWidget and GtkRecentChooserDialog widgets allow multiple filters and the selection of an appropriate one; the GtkRecentChooserMenu widget allows just a single filter object.


ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

Оформить подписку на год


  Закладки на сайте
  Проследить за страницей
Created 1996-2012 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList