X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/2271707479533be4bc9ee77e98c615db18621ac3..ec7109f36e878732d30e592279c2b160b28e6955:/disobedience/queue-generic.h diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index 8733a43..1888602 100644 --- a/disobedience/queue-generic.h +++ b/disobedience/queue-generic.h @@ -45,28 +45,6 @@ struct queue_column { /** @brief Right-algin column */ #define COL_RIGHT 0x0004 -/** @brief An item in the queue's popup menu */ -struct queue_menuitem { - /** @brief Menu item name */ - const char *name; - - /** @brief Called to activate the menu item */ - void (*activate)(GtkMenuItem *menuitem, - gpointer user_data); - - /** @brief Called to determine whether the menu item is usable. - * - * Returns @c TRUE if it should be sensitive and @c FALSE otherwise. - */ - int (*sensitive)(struct queuelike *ql); - - /** @brief Signal handler ID */ - gulong handlerid; - - /** @brief Widget for menu item */ - GtkWidget *w; -}; - /** @brief Definition of a queue-like window */ struct queuelike { @@ -85,7 +63,7 @@ struct queuelike { int ncolumns; /** @brief Items for popup menu */ - struct queue_menuitem *menuitems; + struct menuitem *menuitems; /** @brief Number of menu items */ int nmenuitems; @@ -108,30 +86,51 @@ struct queuelike { /** @brief The popup menu */ GtkWidget *menu; + + /** @brief Menu callbacks */ + struct tabtype tabtype; +}; + +enum { + QUEUEPOINTER_COLUMN, + FOREGROUND_COLUMN, + BACKGROUND_COLUMN, + + EXTRA_COLUMNS }; +/* TODO probably need to set "horizontal-separator" to 0, but can't find any + * coherent description of how to set style properties in isolation. */ +#define BG_PLAYING 0 +#define FG_PLAYING 0 + +#ifndef BG_PLAYING +# define BG_PLAYING "#e0ffe0" +# define FG_PLAYING "black" +#endif + extern struct queuelike ql_queue; extern struct queuelike ql_recent; extern struct queuelike ql_added; extern time_t last_playing; -int ql_selectall_sensitive(struct queuelike *ql); +int ql_selectall_sensitive(void *extra); void ql_selectall_activate(GtkMenuItem *menuitem, gpointer user_data); -int ql_selectnone_sensitive(struct queuelike *ql); +int ql_selectnone_sensitive(void *extra); void ql_selectnone_activate(GtkMenuItem *menuitem, gpointer user_data); -int ql_properties_sensitive(struct queuelike *ql); +int ql_properties_sensitive(void *extra); void ql_properties_activate(GtkMenuItem *menuitem, gpointer user_data); -int ql_scratch_sensitive(struct queuelike *ql); +int ql_scratch_sensitive(void *extra); void ql_scratch_activate(GtkMenuItem *menuitem, gpointer user_data); -int ql_remove_sensitive(struct queuelike *ql); +int ql_remove_sensitive(void *extra); void ql_remove_activate(GtkMenuItem *menuitem, gpointer user_data); -int ql_play_sensitive(struct queuelike *ql); +int ql_play_sensitive(void *extra); void ql_play_activate(GtkMenuItem *menuitem, gpointer user_data); gboolean ql_button_release(GtkWidget *widget, @@ -152,7 +151,7 @@ const char *column_namepart(const struct queue_entry *q, const char *column_length(const struct queue_entry *q, const char *data); struct tabtype *ql_tabtype(struct queuelike *ql); -struct queue_entry *ql_iter_to_q(struct queuelike *ql, +struct queue_entry *ql_iter_to_q(GtkTreeModel *model, GtkTreeIter *iter); #endif /* QUEUE_GENERIC_H */