X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/c133bd3c7f6d982e5447acf61e0b32853e34459b..66e8b80d8fb3d77afa986f4ea236928d513b59c5:/disobedience/queue-generic.h?ds=sidebyside diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index 7ee93b6..8f5b59f 100644 --- a/disobedience/queue-generic.h +++ b/disobedience/queue-generic.h @@ -32,37 +32,27 @@ struct queue_column { /** @brief Passed to value() */ const char *data; - /** @brief TODO */ - gfloat xalign; + /** @brief Flags word */ + unsigned flags; }; -/** @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 Ellipsize column if too wide */ +#define COL_ELLIPSIZE 0x0001 - /** @brief Signal handler ID */ - gulong handlerid; +/** @brief Set expand property */ +#define COL_EXPAND 0x0002 - /** @brief Widget for menu item */ - GtkWidget *w; -}; +/** @brief Right-algin column */ +#define COL_RIGHT 0x0004 /** @brief Definition of a queue-like window */ struct queuelike { /* Things filled in by the caller: */ + /** @brief Name for this tab */ + const char *name; + /** @brief Initialization function */ void (*init)(void); @@ -73,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; @@ -96,6 +86,9 @@ struct queuelike { /** @brief The popup menu */ GtkWidget *menu; + + /** @brief Menu callbacks */ + struct tabtype tabtype; }; extern struct queuelike ql_queue; @@ -104,22 +97,22 @@ 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, @@ -139,6 +132,9 @@ const char *column_namepart(const struct queue_entry *q, const char *data); 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(GtkTreeModel *model, + GtkTreeIter *iter); #endif /* QUEUE_GENERIC_H */