X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/54156c626b7377cd012b1de85679801d59da8a09..47623e11bf9c888953dcdd20b2605268e15215bb:/disobedience/queue-generic.h diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index 8b2acaf..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; @@ -113,28 +91,46 @@ struct queuelike { 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,