mp3splt-gtk
player_tab.h
00001 /**********************************************************
00002  *
00003  * mp3splt-gtk -- utility based on mp3splt,
00004  *                for mp3/ogg splitting without decoding
00005  *
00006  * Copyright (c) 2005-2011 Alexandru Munteanu - io_fx@yahoo.fr
00007  *
00008  * http://mp3splt.sourceforge.net/
00009  *
00010  *********************************************************/
00011 
00012 /**********************************************************
00013  *
00014  * This program is free software; you can redistribute it and/or
00015  * modify it under the terms of the GNU General Public License
00016  * as published by the Free Software Foundation; either version 2
00017  * of the License, or (at your option) any later version.
00018  *
00019  * This program is distributed in the hope that it will be useful,
00020  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00022  * GNU General Public License for more details.
00023  *
00024  * You should have received a copy of the GNU General Public License
00025  * along with this program; if not, write to the Free Software
00026  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
00027  * USA.
00028  *
00029  *********************************************************/
00030 
00031 /**********************************************************
00032  * Filename: player_tab.h
00033  *
00034  * header of player_tab.c
00035  *
00036  *********************************************************/
00037 
00038 #ifndef _PLAYER_TAB_H
00039 #define _PLAYER_TAB_H
00040 
00041 #define ICON_EXT ".svg"
00042 
00044 typedef struct
00045 {
00046   long time;
00047   float level;
00048 } silence_wave;
00049 
00050 //float comparison
00051 #define DELTA 5
00052 
00053 //for the browse dir
00054 #define BROWSE_SONG 1
00055 #define BROWSE_CDDB_FILE 2
00056 #define BROWSE_CUE_FILE 3
00057 
00058 void player_quick_preview(gint splitpoint_to_preview);
00059 void check_update_down_progress_bar();
00060 void set_preview_active_if_needed();
00061 void cancel_quick_preview_all();
00062 void cancel_quick_preview();
00063 void check_cancel_quick_preview(gint i);
00064 void get_splitpoint_time_left_right(gint *time_left,
00065                                     gint *time_right,
00066                                     gint *splitpoint_left);
00067 gint mytimer(gpointer data);
00068 void reset_inactive_progress_bar();
00069 void reset_inactive_volume_bar();
00070 void reset_label_time();
00071 void reset_song_infos();
00072 void reset_song_name_label();
00073 void clear_data_player();
00074 void enable_player_buttons();
00075 void disable_player_buttons();
00076 void connect_change_buttons();
00077 void disconnect_change_buttons();
00078 void connect_with_song(const gchar *fname, gint i);
00079 void connect_to_player_with_song(gint i);
00080 void connect_button_event (GtkWidget *widget,
00081                            gpointer data);
00082 void check_stream();
00083 void disconnect_button_event (GtkWidget *widget, 
00084                               gpointer data);
00085 void play_event (GtkWidget *widget, gpointer data);
00086 void stop_event (GtkWidget *widget, gpointer data);
00087 void pause_event (GtkWidget *widget, gpointer data);
00088 void prev_button_event (GtkWidget *widget, gpointer data);
00089 void next_button_event (GtkWidget *widget, gpointer data);
00090 void change_song_position();
00091 GtkWidget *create_player_buttons_hbox(GtkTreeView *tree_view);
00092 GtkWidget *create_song_informations_hbox();
00093 gboolean progress_bar_unclick_event (GtkWidget *widget,
00094                                    GdkEventCrossing *event,
00095                                      gpointer user_data);
00096 gboolean progress_bar_click_event (GtkWidget *widget,
00097                                    GdkEventCrossing *event,
00098                                    gpointer user_data);
00099 gfloat get_total_time();
00100 gfloat get_elapsed_time();
00101 void refresh_drawing_area();
00102 void progress_bar_value_changed_event (GtkRange *range,
00103                                        gpointer user_data);
00104 gboolean progress_bar_scroll_event (GtkWidget *widget,
00105                                     GdkEventScroll *event,
00106                                     gpointer user_data);
00107 gboolean progress_bar_enter_event (GtkWidget *widget,
00108                                    GdkEventCrossing *event,
00109                                    gpointer user_data);
00110 gboolean progress_bar_leave_event (GtkWidget *widget,
00111                                    GdkEventCrossing *event,
00112                                    gpointer user_data);
00113 GtkWidget *create_song_bar_hbox();
00114 void print_about_the_song();
00115 void print_player_filename();
00116 void print_all_song_infos();
00117 void print_song_time_elapsed();
00118 void change_volume_bar();
00119 void change_progress_bar();
00120 GtkWidget *create_filename_player_hbox();
00121 void change_volume_event(GtkWidget *widget,
00122                          gpointer data);
00123 gboolean volume_bar_unclick_event (GtkWidget *widget,
00124                                    GdkEventCrossing *event,
00125                                    gpointer user_data);
00126 gboolean volume_bar_click_event (GtkWidget *widget,
00127                                  GdkEventCrossing *event,
00128                                  gpointer user_data);
00129 gboolean volume_bar_enter_event (GtkWidget *widget,
00130                                  GdkEventCrossing *event,
00131                                  gpointer user_data);
00132 gboolean volume_bar_leave_event (GtkWidget *widget,
00133                                  GdkEventCrossing *event,
00134                                  gpointer user_data);
00135 gboolean volume_bar_scroll_event (GtkWidget *widget,
00136                                   GdkEventScroll *event,
00137                                   gpointer user_data);
00138 GtkWidget *create_volume_control_box();
00139 void close_player_popup_window_event( GtkWidget *window,
00140                                       gpointer data );
00141 void handle_player_detached_event (GtkHandleBox *handlebox,
00142                                    GtkWidget *widget,
00143                                    gpointer data);
00144 PangoLayout *get_drawing_text(gchar *str);
00145 gfloat get_right_drawing_time();
00146 gfloat get_left_drawing_time();
00147 gint get_time_hundrsecs(gint time);
00148 gint get_time_secs(gint time);
00149 gint get_time_mins(gint time);
00150 gchar *get_time_for_drawing(gchar *str,
00151                             gint time,
00152                             gboolean hundr_or_not,
00153                             gint *number_of_chars);
00154 gint time_to_pixels(gint width,
00155                     gfloat time);
00156 gfloat pixels_to_time(gfloat width,
00157                       gint pixels);
00158 gint get_draw_line_position(gint width,
00159                             gfloat time);
00160 void draw_motif(GtkWidget *da,cairo_t *gc,
00161                 gint ylimit,gint x,gint model);
00162 void draw_marks(gint time_interval,
00163                 gint left_mark,gint right_mark,
00164                 gint ylimit, GtkWidget *da, cairo_t *gc);
00165 //motif for splitpoints
00166 //draw is false if we draw the splitpoint we move
00167 void draw_motif_splitpoints(GtkWidget *da, cairo_t *gc,
00168                             gint x,gint draw,
00169                             gint current_point_hundr_secs,
00170                             gboolean move,
00171                             gint number_splitpoint);
00172 void draw_splitpoints(gint left_mark,
00173                       gint right_mark,
00174                       GtkWidget *da,
00175                       cairo_t *gc);
00176 gboolean da_expose_event (GtkWidget      *da,
00177                           GdkEventExpose *event,
00178                           gpointer       data);
00179 gboolean da_press_event (GtkWidget    *da,
00180                          GdkEventButton *event,
00181                          gpointer     data);
00182 gboolean da_unpress_event (GtkWidget    *da,
00183                            GdkEventButton *event,
00184                            gpointer     data);
00185 gboolean da_notify_event (GtkWidget     *da,
00186                           GdkEventMotion *event,
00187                           gpointer      data);
00188 GtkWidget *create_drawing_area();
00189 GtkWidget *create_player_control_frame(GtkTreeView *tree_view);
00190 
00191 //moved from the file_tab
00192 void file_chooser_cancel_event();
00193 void file_chooser_ok_event(gchar *fname);
00194 void browse_button_event( GtkWidget *widget,
00195                           gpointer   data );
00196 void close_file_popup_window_event( GtkWidget *window,
00197                                     gpointer data );
00198 void handle_file_detached_event (GtkHandleBox *handlebox,
00199                                  GtkWidget *widget,
00200                                  gpointer data);
00201 GtkWidget *create_choose_file_frame();
00202 
00203 void change_current_filename(const gchar *fname);
00204 GtkWidget *create_player_playlist_frame();
00205 
00206 void hide_connect_button();
00207 void show_connect_button();
00208 void hide_disconnect_button();
00209 void show_disconnect_button();
00210 
00211 void inputfilename_set(const gchar *filename);
00212 gchar *inputfilename_get();
00213 
00214 void build_svg_path(GString *imagefile, gchar *svg_filename);
00215 
00216 #endif
00217