/* * Copyright 2015 (c) Anna Schumaker. */ #include #include enum sidebar_columns { SB_IMAGE, SB_NAME, SB_TYPE, }; const gchar *SIDEBAR_SETTING = "gui.sidebar.pos"; static void __gui_sidebar_add_header(GtkTreeIter *iter, const gchar *name, const gchar *image) { gchar *formatted = g_strdup_printf("%s", name); gtk_tree_store_insert_with_values(gui_sidebar_store(), iter, NULL, -1, SB_TYPE, PL_MAX_TYPE, -1); gtk_tree_store_insert_with_values(gui_sidebar_store(), iter, NULL, -1, SB_IMAGE, image, SB_NAME, formatted, SB_TYPE, PL_MAX_TYPE, -1); g_free(formatted); } void __gui_sidebar_resized(GtkPaned *pane, GParamSpec *pspec, gpointer data) { settings_set(SIDEBAR_SETTING, gtk_paned_get_position(pane)); } void gui_sidebar_init() { int pos = settings_get(SIDEBAR_SETTING); GtkTreeIter iter; gui_sidebar_iter_first(&iter); __gui_sidebar_add_header(&iter, "Playlists", "emblem-documents"); __gui_sidebar_add_header(&iter, "Dynamic", "emblem-generic"); __gui_sidebar_add_header(&iter, "Library", "emblem-system"); if (pos > 0) gtk_paned_set_position(gui_sidebar(), pos); } gboolean gui_sidebar_iter_first(GtkTreeIter *iter) { return gtk_tree_model_get_iter_first(gui_sidebar_model(), iter); } gboolean gui_sidebar_iter_next(GtkTreeIter *iter) { return gtk_tree_model_iter_next(gui_sidebar_model(), iter); } gchar *gui_sidebar_iter_name(GtkTreeIter *iter) { gchar *text = NULL, *parsed = NULL, *name, **split; gtk_tree_model_get(gui_sidebar_model(), iter, SB_NAME, &text, -1); if (!text) return g_strdup(""); pango_parse_markup(text, -1, 0, NULL, &parsed, NULL, NULL); if (!parsed) return g_strdup(""); split = g_strsplit(parsed, "\n", 2); name = g_strdup(split[0]); g_strfreev(split); g_free(parsed); g_free(text); return name; } enum playlist_type_t gui_sidebar_iter_type(GtkTreeIter *iter) { enum playlist_type_t type; gtk_tree_model_get(gui_sidebar_model(), iter, SB_TYPE, &type, -1); return type; }