static gboolean recent_item_update (RecentItem *item, GtkRecentInfo *info) { gboolean changed = FALSE; const char *uri; const char *display_name; uri = gtk_recent_info_get_uri (info); if (g_strcmp0 (item->uri, uri) != 0) { changed = TRUE; g_free (item->uri); item->uri = g_strdup (uri); g_clear_object (&item->file); item->file = g_file_new_for_uri (item->uri); } display_name = gtk_recent_info_get_display_name (info); if (g_strcmp0 (item->display_name, display_name) != 0) { changed = TRUE; g_free (item->display_name); item->display_name = g_strdup (display_name); } return changed; }
static void add_recent_project_row (GtkListBox *recent_project_box, GtkRecentData *recent_project) { GtkBuilder *builder; GFile *file; GtkWidget *recent_row; GtkLabel *project_label, *path_label; GError *error; error = NULL; builder = gtk_builder_new (); if (!gtk_builder_add_from_resource (builder, "/org/gnome/anjuta/ui/starter.ui", &error)) { DEBUG_PRINT ("Could not load starter.ui! %s", error->message); g_error_free (error); } else { file = g_file_new_for_uri (gtk_recent_info_get_uri (recent_project)); if (g_file_query_exists (file, NULL)) { recent_row = GTK_WIDGET (gtk_builder_get_object (builder, RECENT_ROW)); project_label = GTK_WIDGET (gtk_builder_get_object (builder, PROJECT_LABEL)); path_label = GTK_WIDGET (gtk_builder_get_object (builder, PATH_LABEL)); gtk_label_set_text (project_label, gtk_recent_info_get_display_name(recent_project)); gtk_label_set_text (path_label, g_file_get_path(file)); g_object_set_data_full (G_OBJECT (recent_row), URI_KEY, g_file_get_uri(file), g_free); gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (recent_row)), recent_row); gtk_list_box_insert (recent_project_box, recent_row, -1); } g_object_unref (file); } g_object_unref (builder); }
static gboolean get_is_recent_filtered (GtkRecentFilter *filter, GtkRecentInfo *info) { GtkRecentFilterInfo filter_info; GtkRecentFilterFlags needed; gboolean retval; g_assert (info != NULL); needed = gtk_recent_filter_get_needed (filter); filter_info.contains = GTK_RECENT_FILTER_URI | GTK_RECENT_FILTER_MIME_TYPE; filter_info.uri = gtk_recent_info_get_uri (info); filter_info.mime_type = gtk_recent_info_get_mime_type (info); if (needed & GTK_RECENT_FILTER_DISPLAY_NAME) { filter_info.display_name = gtk_recent_info_get_display_name (info); filter_info.contains |= GTK_RECENT_FILTER_DISPLAY_NAME; } else filter_info.uri = NULL; if (needed & GTK_RECENT_FILTER_APPLICATION) { filter_info.applications = (const gchar **) gtk_recent_info_get_applications (info, NULL); filter_info.contains |= GTK_RECENT_FILTER_APPLICATION; } else filter_info.applications = NULL; if (needed & GTK_RECENT_FILTER_GROUP) { filter_info.groups = (const gchar **) gtk_recent_info_get_groups (info, NULL); filter_info.contains |= GTK_RECENT_FILTER_GROUP; } else filter_info.groups = NULL; if (needed & GTK_RECENT_FILTER_AGE) { filter_info.age = gtk_recent_info_get_age (info); filter_info.contains |= GTK_RECENT_FILTER_AGE; } else filter_info.age = -1; retval = gtk_recent_filter_filter (filter, &filter_info); /* these we own */ if (filter_info.applications) g_strfreev ((gchar **) filter_info.applications); if (filter_info.groups) g_strfreev ((gchar **) filter_info.groups); return !retval; }
static void populate_filter_info (GtkRecentInfo *info, GtkRecentFilterInfo *filter_info, GtkRecentFilterFlags needed) { filter_info->uri = gtk_recent_info_get_uri (info); filter_info->mime_type = gtk_recent_info_get_mime_type (info); filter_info->contains = GTK_RECENT_FILTER_URI | GTK_RECENT_FILTER_MIME_TYPE; if (needed & GTK_RECENT_FILTER_DISPLAY_NAME) { filter_info->display_name = gtk_recent_info_get_display_name (info); filter_info->contains |= GTK_RECENT_FILTER_DISPLAY_NAME; } else { filter_info->uri = NULL; } if (needed & GTK_RECENT_FILTER_APPLICATION) { filter_info->applications = (const gchar **) gtk_recent_info_get_applications (info, NULL); filter_info->contains |= GTK_RECENT_FILTER_APPLICATION; } else { filter_info->applications = NULL; } if (needed & GTK_RECENT_FILTER_GROUP) { filter_info->groups = (const gchar **) gtk_recent_info_get_groups (info, NULL); filter_info->contains |= GTK_RECENT_FILTER_GROUP; } else { filter_info->groups = NULL; } if (needed & GTK_RECENT_FILTER_AGE) { filter_info->age = gtk_recent_info_get_age (info); filter_info->contains |= GTK_RECENT_FILTER_AGE; } else { filter_info->age = -1; } }
void RecentManager::addRecentMenu(GtkRecentInfo *info, int i) { XOJ_CHECK_TYPE(RecentManager); gchar * label = NULL; const char * display_name = gtk_recent_info_get_display_name(info); char * escaped = gedit_utils_escape_underscores(display_name, -1); if (i >= 10) { label = g_strdup_printf("%d. %s", i, escaped); } else { label = g_strdup_printf("_%d. %s", i, escaped); } g_free(escaped); /* gtk_recent_info_get_uri_display (info) is buggy and * works only for local files */ char * uri = gedit_utils_uri_for_display(gtk_recent_info_get_uri(info)); char * ruri = gedit_utils_replace_home_dir_with_tilde(uri); g_free(uri); // Translators: %s is a URI char * tip = g_strdup_printf(_("Open '%s'"), ruri); g_free(ruri); GtkWidget * item = gtk_menu_item_new_with_mnemonic(label); gtk_widget_set_tooltip_text(item, tip); g_object_set_data_full(G_OBJECT (item), "gtk-recent-info", gtk_recent_info_ref(info), (GDestroyNotify) gtk_recent_info_unref); g_signal_connect (item, "activate", G_CALLBACK (recentsMenuActivateCallback), this); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); gtk_widget_set_visible(GTK_WIDGET(item), true); this->menuItemList = g_list_append(this->menuItemList, item); g_free(label); g_free(tip); }
GscProposal* gsc_proposal_recent_new (GeditWindow *window, GtkRecentInfo *info, GdkPixbuf *icon) { /* FIXME Check objects */ const gchar *name = gtk_recent_info_get_display_name (info); gchar *display_info = gtk_recent_info_get_uri_display (info); const gchar *uri = gtk_recent_info_get_uri (info); GscProposalRecent *self = GSC_PROPOSAL_RECENT (g_object_new (GSC_TYPE_PROPOSAL_RECENT, "label", name, "info", display_info, "icon", icon, "page-name", "Recent Files", NULL)); self->priv->window = window; self->priv->uri = g_strdup(uri); g_free (display_info); return GSC_PROPOSAL (self); }
QStringList On::recentFiles() { QStringList recent; GtkRecentManager *manager = gtk_recent_manager_get_default(); GList *list = gtk_recent_manager_get_items(manager); GtkRecentInfo *item; int i = 0; GFOREACH(item, list) { recent.append(QUrl::fromEncoded(gtk_recent_info_get_uri(item)).toString()); recent.append(QUrl::fromEncoded(gtk_recent_info_get_display_name(item)).toString()); recent.append(gdkPixbufToBase64(gtk_recent_info_get_icon(item, iconSize))); if (i == 50) { gtk_recent_info_unref(item); g_list_free(list); return recent; } i++; }
static void build_recent_projects (GtkWidget *box, Starter *wcm) { GtkRecentManager *manager; GList *list; gint limit = 1000; gint i = 0; manager = gtk_recent_manager_get_default (); list = gtk_recent_manager_get_items (manager); while (i < limit && list != NULL) { if (strcmp (gtk_recent_info_get_mime_type (list->data), "application/x-anjuta") == 0) { GtkWidget *button; GFile *file; button = anjuta_starter_button_new (gtk_recent_info_get_display_name (list->data)); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (box), button, TRUE, TRUE, 0); file = g_file_new_for_uri (gtk_recent_info_get_uri (list->data)); g_object_set_data_full (G_OBJECT (button), "file", file, (GDestroyNotify)destroy_notify); g_signal_connect (button, "clicked", G_CALLBACK (recent_project_clicked_cb), wcm); } i++; list = g_list_next (list); } g_list_foreach (list, (GFunc)gtk_recent_info_unref, NULL); g_list_free (list); }
static VALUE rg_display_name(VALUE self) { return CSTR2RVAL(gtk_recent_info_get_display_name(_SELF(self))); }
static void brasero_project_type_chooser_build_recent (BraseroProjectTypeChooser *self, GtkRecentManager *recent) { GtkSizeGroup *image_group; GtkSizeGroup *group; GList *list = NULL; gchar *filename; GList *recents; GList *iter; recents = gtk_recent_manager_get_items (recent); for (iter = recents; iter; iter = iter->next) { GtkRecentInfo *info; const gchar *mime; info = iter->data; mime = gtk_recent_info_get_mime_type (info); if (!mime) continue; /* filter those we want */ if (strcmp (mime, "application/x-brasero") && strcmp (mime, "application/x-cd-image") && strcmp (mime, "application/x-cdrdao-toc") && strcmp (mime, "application/x-toc") && strcmp (mime, "application/x-cue") && strcmp (mime, "audio/x-scpls") && strcmp (mime, "audio/x-ms-asx") && strcmp (mime, "audio/x-mp3-playlist") && strcmp (mime, "audio/x-mpegurl")) continue; /* sort */ list = g_list_insert_sorted (list, info, brasero_project_type_chooser_sort_recent); if (g_list_length (list) > 5) list = g_list_delete_link (list, g_list_last (list)); } group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH); image_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH); /* If a project was left unfinished last time then add another entry */ filename = g_build_filename (g_get_user_config_dir (), "brasero", BRASERO_SESSION_TMP_PROJECT_PATH, NULL); if (g_file_test (filename, G_FILE_TEST_EXISTS)) { gchar *uri; GtkWidget *link; GtkWidget *image; uri = g_filename_to_uri (filename, NULL, NULL); image = gtk_image_new_from_icon_name ("brasero", GTK_ICON_SIZE_BUTTON); gtk_size_group_add_widget (image_group, image); link = gtk_button_new_with_label (_("Last _Unsaved Project")); g_object_set_data_full (G_OBJECT (link), "BraseroButtonURI", uri, g_free); gtk_button_set_relief (GTK_BUTTON (link), GTK_RELIEF_NONE); gtk_button_set_alignment (GTK_BUTTON (link), 0.0, 0.5); gtk_button_set_focus_on_click (GTK_BUTTON (link), FALSE); gtk_button_set_image (GTK_BUTTON (link), image); gtk_button_set_use_underline (GTK_BUTTON (link), TRUE); g_signal_connect (link, "clicked", G_CALLBACK (brasero_project_type_chooser_last_unsaved_clicked_cb), self); gtk_widget_show (link); gtk_widget_set_tooltip_text (link, _("Load the last project that was not burned and not saved")); gtk_box_pack_start (GTK_BOX (self->priv->recent_box), link, FALSE, TRUE, 0); gtk_size_group_add_widget (group, link); } g_free (filename); for (iter = list; iter; iter = iter->next) { GtkRecentInfo *info; GList *child_iter; const gchar *name; GIcon *icon; GtkWidget *image; const gchar *uri; GtkWidget *child; GtkWidget *link; GList *children; gchar *tooltip; info = iter->data; tooltip = gtk_recent_info_get_uri_display (info); icon = gtk_recent_info_get_gicon (info); image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_BUTTON); g_object_unref (icon); gtk_size_group_add_widget (image_group, image); gtk_widget_show (image); gtk_widget_set_tooltip_text (image, tooltip); name = gtk_recent_info_get_display_name (info); uri = gtk_recent_info_get_uri (info); /* Don't use mnemonics with filenames */ link = gtk_button_new_with_label (name); g_object_set_data_full (G_OBJECT (link), "BraseroButtonURI", g_strdup (uri), g_free); gtk_button_set_relief (GTK_BUTTON (link), GTK_RELIEF_NONE); gtk_button_set_image (GTK_BUTTON (link), image); gtk_button_set_alignment (GTK_BUTTON (link), 0.0, 0.5); gtk_button_set_focus_on_click (GTK_BUTTON (link), FALSE); g_signal_connect (link, "clicked", G_CALLBACK (brasero_project_type_chooser_recent_clicked_cb), self); gtk_widget_show (link); gtk_widget_set_tooltip_text (link, tooltip); gtk_box_pack_start (GTK_BOX (self->priv->recent_box), link, FALSE, TRUE, 0); g_free (tooltip); gtk_size_group_add_widget (group, link); /* That's a tedious hack to avoid mnemonics which are hardcoded * when you add an image to a button. BUG? */ if (!GTK_IS_BIN (link)) continue; child = gtk_bin_get_child (GTK_BIN (link)); if (!GTK_IS_ALIGNMENT (child)) continue; gtk_alignment_set (GTK_ALIGNMENT (child), 0.0, 0.5, 1.0, 1.0); child = gtk_bin_get_child (GTK_BIN (child)); if (!GTK_IS_BOX (child)) continue; children = gtk_container_get_children (GTK_CONTAINER (child)); for (child_iter = children; child_iter; child_iter = child_iter->next) { GtkWidget *widget; widget = child_iter->data; if (GTK_IS_LABEL (widget)) { gtk_label_set_use_underline (GTK_LABEL (widget), FALSE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); /* Make sure that the name is not too long */ gtk_box_set_child_packing (GTK_BOX (child), widget, TRUE, TRUE, 0, GTK_PACK_START); gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END); break; } } g_list_free (children); } g_object_unref (image_group); g_object_unref (group); if (!g_list_length (list)) { GtkWidget *label; gchar *string; string = g_strdup_printf ("<i>%s</i>", _("No recently used project")); label = gtk_label_new (string); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); g_free (string); gtk_widget_show (label); gtk_box_pack_start (GTK_BOX (self->priv->recent_box), label, FALSE, FALSE, 0); } g_list_free (list); g_list_foreach (recents, (GFunc) gtk_recent_info_unref, NULL); g_list_free (recents); }