1 /* EasyTAG - tag editor for audio files
2  * Copyright (C) 2014-2015  David King <amigadave@amigadave.com>
3  * Copyright (C) 2000-2003  Jerome Couderc <easytag@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License as published by the Free
7  * Software Foundation; either version 2 of the License, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along with
16  * this program; if not, write to the Free Software Foundation, Inc., 51
17  * Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18  */
19 
20 #ifndef ET_BROWSER_H_
21 #define ET_BROWSER_H_
22 
23 #include <gtk/gtk.h>
24 
25 G_BEGIN_DECLS
26 
27 #include "et_core.h"
28 
29 #define ET_TYPE_BROWSER (et_browser_get_type ())
30 #define ET_BROWSER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ET_TYPE_BROWSER, EtBrowser))
31 
32 typedef struct _EtBrowser EtBrowser;
33 typedef struct _EtBrowserClass EtBrowserClass;
34 
35 struct _EtBrowser
36 {
37     /*< private >*/
38     GtkBin parent_instance;
39 };
40 
41 struct _EtBrowserClass
42 {
43     /*< private >*/
44     GtkBinClass parent_class;
45 };
46 
47 GType et_browser_get_type (void);
48 EtBrowser *et_browser_new (void);
49 void et_browser_show_open_directory_with_dialog (EtBrowser *self);
50 void et_browser_show_open_files_with_dialog (EtBrowser *self);
51 void et_browser_show_rename_directory_dialog (EtBrowser *self);
52 
53 typedef enum
54 {
55     ET_BROWSER_MODE_FILE,
56     ET_BROWSER_MODE_ARTIST
57 } EtBrowserMode;
58 
59 /*
60  * To number columns of ComboBox
61  */
62 enum
63 {
64     MISC_COMBO_TEXT, // = 0 (First column)
65     MISC_COMBO_COUNT // = 1 (Number of columns in ComboBox)
66 };
67 
68 void et_browser_clear_album_model (EtBrowser *self);
69 void et_browser_clear_artist_model (EtBrowser *self);
70 
71 void et_browser_select_dir (EtBrowser *self, GFile *file);
72 void et_browser_reload (EtBrowser *self);
73 void et_browser_collapse (EtBrowser *self);
74 void et_browser_set_sensitive (EtBrowser *self, gboolean sensitive);
75 
76 void et_browser_load_file_list (EtBrowser *self, GList *etfilelist, const ET_File *etfile_to_select);
77 void et_browser_refresh_list (EtBrowser *self);
78 void et_browser_refresh_file_in_list (EtBrowser *self, const ET_File *ETFile);
79 void et_browser_clear (EtBrowser *self);
80 void et_browser_select_file_by_et_file (EtBrowser *self, const ET_File *ETFile, gboolean select_it);
81 GtkTreePath * et_browser_select_file_by_et_file2 (EtBrowser *self, const ET_File *searchETFile, gboolean select_it, GtkTreePath *startPath);
82 void et_browser_select_file_by_iter_string (EtBrowser *self, const gchar* stringiter, gboolean select_it);
83 ET_File *et_browser_select_file_by_dlm (EtBrowser *self, const gchar* string, gboolean select_it);
84 void et_browser_refresh_sort (EtBrowser *self);
85 void et_browser_select_all (EtBrowser *self);
86 void et_browser_unselect_all (EtBrowser *self);
87 void et_browser_invert_selection (EtBrowser *self);
88 void et_browser_remove_file (EtBrowser *self, const ET_File *ETFile);
89 ET_File * et_browser_get_et_file_from_path (EtBrowser *self, GtkTreePath *path);
90 ET_File * et_browser_get_et_file_from_iter (EtBrowser *self, GtkTreeIter *iter);
91 
92 void et_browser_entry_set_text (EtBrowser *self, const gchar *text);
93 void et_browser_label_set_text (EtBrowser *self, const gchar *text);
94 
95 void et_browser_set_display_mode (EtBrowser *self, EtBrowserMode mode);
96 
97 void et_browser_go_home (EtBrowser *self);
98 void et_browser_go_desktop (EtBrowser *self);
99 void et_browser_go_documents (EtBrowser *self);
100 void et_browser_go_downloads (EtBrowser *self);
101 void et_browser_go_music (EtBrowser *self);
102 void et_browser_go_parent (EtBrowser *self);
103 
104 void et_browser_run_player_for_album_list (EtBrowser *self);
105 void et_browser_run_player_for_artist_list (EtBrowser *self);
106 void et_browser_run_player_for_selection (EtBrowser *self);
107 
108 void et_browser_load_default_dir (EtBrowser *self);
109 void et_browser_reload_directory (EtBrowser *self);
110 void et_browser_set_current_path_default (EtBrowser *self);
111 GFile * et_browser_get_current_path (EtBrowser *self);
112 
113 GtkTreeSelection * et_browser_get_selection (EtBrowser *self);
114 
115 GtkTreeViewColumn * et_browser_get_column_for_column_id (EtBrowser *self, gint column_id);
116 GtkSortType et_browser_get_sort_order_for_column_id (EtBrowser *self, gint column_id);
117 
118 G_END_DECLS
119 
120 #endif /* ET_BROWSER_H_ */
121