X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/2271707479533be4bc9ee77e98c615db18621ac3..4265e5d362914f3732b4035dcf67162e525e0142:/disobedience/queue-generic.h diff --git a/disobedience/queue-generic.h b/disobedience/queue-generic.h index 8733a43..4b31fe9 100644 --- a/disobedience/queue-generic.h +++ b/disobedience/queue-generic.h @@ -2,20 +2,21 @@ * This file is part of DisOrder * Copyright (C) 2006-2008 Richard Kettlewell * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * along with this program. If not, see . + */ +/** @file disobedience/queue-generic.h + * @brief Disobedience queue widgets */ #ifndef QUEUE_GENERIC_H #define QUEUE_GENERIC_H @@ -45,28 +46,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 +64,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,32 +87,56 @@ 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); +int ql_adopt_sensitive(void *extra); +void ql_adopt_activate(GtkMenuItem *menuitem, + gpointer user_data); gboolean ql_button_release(GtkWidget *widget, GdkEventButton *event, gpointer user_data); @@ -152,7 +155,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 */