1 /*
2  * Copyright (c) 2010, 2011 Ryan Flannery <ryan.flannery@gmail.com>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef COMMANDS_H
18 #define COMMANDS_H
19 
20 #include "enums.h"
21 #include "paint.h"
22 #include "str2argv.h"
23 #include "vitunes.h"
24 #include "debug.h"
25 #include "keybindings.h"
26 
27 #include "compat.h"
28 
29 /****************************************************************************
30  * Toggle-list handling stuff
31  ***************************************************************************/
32 
33 /* command-mode command struct */
34 typedef struct {
35    char  *name;
36    int   (*func)(int argc, char **argv);
37 } cmd;
38 
39 extern const cmd CommandPath[];
40 extern const int CommandPathSize;
41 
42 /* command-mode command handlers */
43 int cmd_quit(int argc, char *argv[]);
44 int cmd_write(int argc, char *argv[]);
45 int cmd_mode(int argc, char *argv[]);
46 int cmd_new(int argc, char *argv[]);
47 int cmd_filter(int argc, char *argv[]);
48 int cmd_sort(int argc, char *argv[]);
49 int cmd_display(int argc, char *argv[]);
50 int cmd_color(int argc, char *argv[]);
51 int cmd_set(int argc, char *argv[]);
52 int cmd_reload(int argc, char *argv[]);
53 int cmd_bind(int argc, char *argv[]);
54 int cmd_unbind(int argc, char *argv[]);
55 int cmd_toggle(int argc, char *argv[]);
56 int cmd_playlist(int argc, char *argv[]);
57 
58 /* parse a string and execute it as a command */
59 void cmd_execute(char *cmd);
60 
61 
62 /****************************************************************************
63  * Toggle-list handling stuff
64  ***************************************************************************/
65 
66 /* struct for a single toggle list */
67 typedef struct {
68    int      registr;
69    char   **commands;
70    size_t   size;
71    size_t   index;
72 } toggle_list;
73 
74 /* the array (and size) of all toggle lists currently loaded */
75 extern toggle_list **toggleset;
76 extern size_t        toggleset_size;
77 
78 /* initialize and free the toggleset */
79 void toggleset_init();
80 void toggleset_free();
81 
82 toggle_list *toggle_list_create(int registr, int argc, char *argv[]);
83 void toggle_list_add_command(toggle_list *t, char *cmd);
84 void toggle_list_free(toggle_list *t);
85 
86 void toggle_add(toggle_list *t);
87 void toggle_remove(int registr);
88 toggle_list* toggle_get(int registr);
89 
90 
91 /****************************************************************************
92  * Misc.
93  ***************************************************************************/
94 
95 int user_getstr(const char *prompt, char **response);
96 int user_get_yesno(const char *prompt, int *response);
97 
98 void setup_viewing_playlist(playlist *p);
99 
100 
101 #endif
102