Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
panel_file_browser.h
1// SPDX-FileCopyrightText: © 2019-2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __GUI_WIDGETS_PANEL_FILE_BROWSER_H__
5#define __GUI_WIDGETS_PANEL_FILE_BROWSER_H__
6
7#include "common/io/file_descriptor.h"
8#include "common/utils/types.h"
9#include "gui/backend/gtk_widgets/gtk_wrapper.h"
10
11TYPEDEF_STRUCT_UNDERSCORED (FileAuditionerControlsWidget);
12TYPEDEF_STRUCT_UNDERSCORED (FileBrowserFiltersWidget);
14class ItemFactory;
15
21
22#define PANEL_FILE_BROWSER_WIDGET_TYPE (panel_file_browser_widget_get_type ())
23G_DECLARE_FINAL_TYPE (
24 PanelFileBrowserWidget,
25 panel_file_browser_widget,
26 Z,
27 PANEL_FILE_BROWSER_WIDGET,
28 GtkWidget);
29
30#define MW_PANEL_FILE_BROWSER MW_RIGHT_DOCK_EDGE->file_browser
31
32using PanelFileBrowserWidget = struct _PanelFileBrowserWidget
33{
34 GtkWidget parent_instance;
35
36 GtkPaned * paned;
37
38 GtkBox * browser_top;
39 GtkBox * browser_bot;
40
41 GtkListView * bookmarks_list_view;
42 std::unique_ptr<ItemFactory> * bookmarks_item_factory;
43
44 GtkLabel * file_info;
45 FileType selected_type;
46
47 GtkSearchEntry * file_search_entry;
48
49 GtkCustomFilter * files_filter;
50 GtkFilterListModel * files_filter_model;
51 GtkSingleSelection * files_selection_model;
52 std::unique_ptr<ItemFactory> * files_item_factory;
53 GtkListView * files_list_view;
54
56 // GPtrArray * selected_locations;
57 std::vector<FileDescriptor *> * selected_files;
58
59 FileBrowserFiltersWidget * filters_toolbar;
60
61 FileAuditionerControlsWidget * auditioner_controls;
62
64 const FileDescriptor * cur_file;
65
66 bool first_draw;
67
69 GtkPopoverMenu * popover_menu;
70};
71
72void
73panel_file_browser_refresh_bookmarks (PanelFileBrowserWidget * self);
74
76panel_file_browser_widget_get_selected_bookmark (PanelFileBrowserWidget * self);
77
78PanelFileBrowserWidget *
79panel_file_browser_widget_new (void);
80
84
85#endif
Item factory for column views.
FileType
File type.
struct _FileBrowserFiltersWidget { GtkBox parent_instance; GtkToggleButton *toggle_audio; GtkToggleButton *toggle_midi; GtkToggleButton *toggle_presets; GenericCallback refilter_files;} FileBrowserFiltersWidget
File auditioner controls used in file browsers.
struct _FileAuditionerControlsWidget { GtkBox parent_instance; bool for_files; GtkButton * play_btn; GtkButton * stop_btn; GtkMenuButton *file_settings_btn; VolumeWidget * volume; GtkDropDown *instrument_dropdown; GtkWidget * owner; SelectedFileGetter selected_file_getter; GenericCallback refilter_files;} FileAuditionerControlsWidget
File auditioner controls used in file browsers.
Locations to be used in the file browser.