2 * omnplay.h -- GTK+ 2 omnplay
3 * Copyright (C) 2011 Maksym Veremeyenko <verem@m1stereo.tv>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 #endif /* __cplusplus */
28 typedef enum control_buttons
30 BUTTON_PLAYLIST_ITEM_ADD
= 1,
31 BUTTON_PLAYLIST_ITEM_DEL
,
32 BUTTON_PLAYLIST_ITEM_EDIT
,
37 BUTTON_PLAYLIST_BLOCK_SINGLE
,
38 BUTTON_PLAYLIST_BLOCK_LOOP
,
40 BUTTON_PLAYLIST_ITEM_UP
,
41 BUTTON_PLAYLIST_ITEM_DOWN
,
49 BUTTON_LIBRARY_REFRESH
,
54 #define OMNPLAY_PLAYLIST_BLOCK_BEGIN 1
55 #define OMNPLAY_PLAYLIST_BLOCK_BODY 0
56 #define OMNPLAY_PLAYLIST_BLOCK_END 2
57 #define OMNPLAY_PLAYLIST_BLOCK_LOOP 4
59 typedef enum playlist_item_type
62 OMNPLAY_PLAYLIST_ITEM_BLOCK_BEGIN
= OMNPLAY_PLAYLIST_BLOCK_BEGIN
,
64 OMNPLAY_PLAYLIST_ITEM_BLOCK_BODY
= OMNPLAY_PLAYLIST_BLOCK_BODY
,
66 OMNPLAY_PLAYLIST_ITEM_BLOCK_END
= OMNPLAY_PLAYLIST_BLOCK_END
,
68 OMNPLAY_PLAYLIST_ITEM_BLOCK_SINGLE
= OMNPLAY_PLAYLIST_BLOCK_BEGIN
|
69 OMNPLAY_PLAYLIST_BLOCK_BODY
|
70 OMNPLAY_PLAYLIST_BLOCK_END
,
72 OMNPLAY_PLAYLIST_ITEM_LOOP_BEGIN
= OMNPLAY_PLAYLIST_BLOCK_BEGIN
|
73 OMNPLAY_PLAYLIST_BLOCK_LOOP
,
75 OMNPLAY_PLAYLIST_ITEM_LOOP_BODY
= OMNPLAY_PLAYLIST_BLOCK_BODY
|
76 OMNPLAY_PLAYLIST_BLOCK_LOOP
,
78 OMNPLAY_PLAYLIST_ITEM_LOOP_END
= OMNPLAY_PLAYLIST_BLOCK_END
|
79 OMNPLAY_PLAYLIST_BLOCK_LOOP
,
81 OMNPLAY_PLAYLIST_ITEM_LOOP_SINGLE
= OMNPLAY_PLAYLIST_BLOCK_BEGIN
|
82 OMNPLAY_PLAYLIST_BLOCK_BODY
|
83 OMNPLAY_PLAYLIST_BLOCK_END
|
84 OMNPLAY_PLAYLIST_BLOCK_LOOP
,
85 } playlist_item_type_t
;
87 #define MAX_PLAYLIST_ITEMS 1024
89 typedef struct playlist_item
96 playlist_item_type_t type
;
101 #define MAX_PLAYERS 4
103 struct omnplay_instance
;
105 typedef struct omnplay_player
112 GtkWidget
*label_status
, *label_state
, *label_tc_cur
, *label_tc_rem
, *label_clip
;
113 struct omnplay_instance
*app
;
118 typedef struct omnplay_instance
121 GtkWidget
*playlist_grid
;
122 GtkWidget
*library_grid
;
123 GtkWidget
*buttons
[BUTTON_LAST
+ 1];
126 omnplay_player_t item
[MAX_PLAYERS
];
129 pthread_mutex_t lock
;
134 playlist_item_t item
[MAX_PLAYLIST_ITEMS
];
138 pthread_mutex_t lock
;
140 GdkPixbuf
*block_icons
[8];
142 } omnplay_instance_t
;
144 omnplay_instance_t
* omnplay_create(int argc
, char** argv
);
145 void omnplay_init(omnplay_instance_t
* app
);
146 void omnplay_release(omnplay_instance_t
* app
);
147 void omnplay_destroy(omnplay_instance_t
* app
);
148 void omnplay_playlist_load(omnplay_instance_t
* app
);
149 void omnplay_playlist_save(omnplay_instance_t
* app
);
150 void omnplay_playlist_draw(omnplay_instance_t
* app
);
151 void omnplay_playlist_draw_item(omnplay_instance_t
* app
, int idx
);
155 #endif /* __cplusplus */
157 #endif /* OMNPLAY_H */