X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/ad47bd4ceb35ce30440fb7ccc5a7d871375ea362..ec7109f36e878732d30e592279c2b160b28e6955:/disobedience/choose.h diff --git a/disobedience/choose.h b/disobedience/choose.h index 49c9b60..c101e6b 100644 --- a/disobedience/choose.h +++ b/disobedience/choose.h @@ -20,42 +20,64 @@ #ifndef CHOOSE_H #define CHOOSE_H -/** @brief Extra data at each node */ -struct choosedata { - /** @brief Node type */ - int type; - - /** @brief Full track or directory name */ - gchar *track; - - /** @brief Sort key */ - gchar *sort; -}; - /** @brief Column numbers */ enum { - STATE_COLUMN, - NAME_COLUMN, - LENGTH_COLUMN, - CHOOSEDATA_COLUMN + /* Visible columns */ + STATE_COLUMN, /* Track state */ + NAME_COLUMN, /* Track name (display context) */ + LENGTH_COLUMN, /* Track length */ + /* Hidden columns */ + ISFILE_COLUMN, /* TRUE for a track, FALSE for a directory */ + TRACK_COLUMN, /* Full track name, "" for placeholder */ + SORT_COLUMN, /* Sort key */ + BG_COLUMN, /* Background color */ + FG_COLUMN, /* Foreground color */ + AUTOCOLLAPSE_COLUMN, /* TRUE if row should be auto-collapsed */ + + CHOOSE_COLUMNS /* column count */ }; -/** @brief @ref choosedata node is a file */ -#define CHOOSE_FILE 0 +#ifndef SEARCH_RESULT_BG +/** @brief Background color for search results */ +# define SEARCH_RESULT_BG "#ffffc0" +/** @brief Foreground color for search results */ +# define SEARCH_RESULT_FG "black" +#endif -/** @brief @ref choosedata node is a directory */ -#define CHOOSE_DIRECTORY 1 +#ifndef SEARCH_DELAY_MS +/** @brief Delay between last keypress in search entry and start of search */ +# define SEARCH_DELAY_MS 500 /* milliseconds */ +#endif extern GtkTreeStore *choose_store; extern GtkWidget *choose_view; extern GtkTreeSelection *choose_selection; extern const struct tabtype choose_tabtype; +extern int choose_auto_expanding; +extern GtkWidget *choose_search_entry; struct choosedata *choose_iter_to_data(GtkTreeIter *iter); struct choosedata *choose_path_to_data(GtkTreePath *path); gboolean choose_button_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data); +void choose_play_completed(void attribute((unused)) *v, + const char *err); +char *choose_get_track(GtkTreeIter *iter); +char *choose_get_sort(GtkTreeIter *iter); +char *choose_get_display(GtkTreeIter *iter); +int choose_is_file(GtkTreeIter *iter); +int choose_is_dir(GtkTreeIter *iter); +int choose_is_placeholder(GtkTreeIter *iter); +int choose_can_autocollapse(GtkTreeIter *iter); +GtkWidget *choose_search_widget(void); +int choose_is_search_result(const char *track); +void choose_auto_collapse(void); +void choose_next_clicked(GtkButton *button, + gpointer userdata); +void choose_prev_clicked(GtkButton *button, + gpointer userdata); +void choose_search_new(void); #endif /* CHOOSE_H */