BEAST - Free Software Audio Synthesizer and Tracker  0.10.0
bstfiledialog.hh
Go to the documentation of this file.
1  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
2 #ifndef __BST_FILE_DIALOG_H__
3 #define __BST_FILE_DIALOG_H__
4 
5 #include "bstutils.hh"
6 #include "bstapp.hh"
7 
8 G_BEGIN_DECLS
9 
10 
11 /* --- type macros --- */
12 #define BST_TYPE_FILE_DIALOG (bst_file_dialog_get_type ())
13 #define BST_FILE_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BST_TYPE_FILE_DIALOG, BstFileDialog))
14 #define BST_FILE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BST_TYPE_FILE_DIALOG, BstFileDialogClass))
15 #define BST_IS_FILE_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BST_TYPE_FILE_DIALOG))
16 #define BST_IS_FILE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BST_TYPE_FILE_DIALOG))
17 #define BST_FILE_DIALOG_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BST_TYPE_FILE_DIALOG, BstFileDialogClass))
18 
19 
20 /* --- typedefs --- */
21 typedef struct _BstFileDialog BstFileDialog;
22 typedef struct _BstFileDialogClass BstFileDialogClass;
23 
24 
25 /* --- structures --- */
26 typedef enum {
27  BST_FILE_DIALOG_OPEN_PROJECT = 0x0001,
28  BST_FILE_DIALOG_MERGE_PROJECT = 0x0002,
29  BST_FILE_DIALOG_SAVE_PROJECT = 0x0003,
30  BST_FILE_DIALOG_IMPORT_MIDI = 0x0004,
31  BST_FILE_DIALOG_SELECT_FILE = 0x0008,
32  BST_FILE_DIALOG_SELECT_DIR = 0x0009,
33  BST_FILE_DIALOG_LOAD_WAVE = 0x0011,
34  BST_FILE_DIALOG_LOAD_WAVE_LIB = 0x0012,
35  BST_FILE_DIALOG_MERGE_EFFECT = 0x0021,
36  BST_FILE_DIALOG_MERGE_INSTRUMENT = 0x0022,
37  BST_FILE_DIALOG_SAVE_EFFECT = 0x0023,
38  BST_FILE_DIALOG_SAVE_INSTRUMENT = 0x0024,
39  BST_FILE_DIALOG_MODE_MASK = 0x00ff,
40  BST_FILE_DIALOG_ALLOW_DIRS = 0x1000,
41  BST_FILE_DIALOG_FLAG_MASK = 0xff00
42 } BstFileDialogMode;
44 {
45  GxkDialog parent_instance;
46  GtkFileSelection *fs;
47  GtkWidget *notebook;
48  GtkWidget *fpage; /* file selection */
49  GtkWidget *spage; /* sample selection */
50  GtkTreeView *tview; /* sample selection tree view */
51  GtkWidget *osave; /* save options */
52  GtkWidget *radio1, *radio2;
53  gchar *selected;
54  /* mode state */
55  BstFileDialogMode mode : 16;
56  guint ignore_activate : 1;
57  guint using_file_store : 1;
58  guint apply_project_name : 1;
59  GtkTreeModel *file_store;
60  gchar *search_path;
61  const gchar *search_filter;
62  GtkWindow *parent_window;
63  SfiProxy super, wave_repo;
64  Bse::ProjectH project;
65 };
67 {
68  GxkDialogClass parent_class;
69 };
70 
71 
72 /* --- prototypes --- */
73 GType bst_file_dialog_get_type (void);
74 GtkWidget* bst_file_dialog_popup_open_project (gpointer parent_widget);
75 GtkWidget* bst_file_dialog_popup_merge_project (gpointer parent_widget, Bse::ProjectH project);
76 GtkWidget* bst_file_dialog_popup_import_midi (gpointer parent_widget, Bse::ProjectH project);
77 GtkWidget* bst_file_dialog_popup_save_project (gpointer parent_widget, Bse::ProjectH project,
78  gboolean query_project_name, gboolean apply_project_name);
79 GtkWidget* bst_file_dialog_popup_merge_effect (gpointer parent_widget, Bse::ProjectH project);
80 GtkWidget* bst_file_dialog_popup_save_effect (gpointer parent_widget, Bse::ProjectH project, SfiProxy super);
81 GtkWidget* bst_file_dialog_popup_save_instrument (gpointer parent_widget, Bse::ProjectH project, SfiProxy super);
82 GtkWidget* bst_file_dialog_popup_merge_instrument (gpointer parent_widget, Bse::ProjectH project);
83 GtkWidget* bst_file_dialog_popup_select_file (gpointer parent_widget);
84 GtkWidget* bst_file_dialog_popup_select_dir (gpointer parent_widget);
85 GtkWidget* bst_file_dialog_popup_load_wave (gpointer parent_widget,
86  SfiProxy wave_repo,
87  gboolean show_lib);
88 void bst_file_dialog_set_mode (BstFileDialog *self, gpointer parent_widget, BstFileDialogMode mode,
89  const gchar *fs_title, Bse::ProjectH project = Bse::ProjectH(),
90  SfiProxy wave_repo = 0);
91 GtkWidget* bst_file_dialog_create (void);
92 void bst_file_dialog_setup (GtkWidget *widget,
93  gpointer parent_widget,
94  const gchar *title,
95  const gchar *search_path);
96 typedef void (*BstFileDialogHandler) (GtkWidget *dialog,
97  const gchar *file,
98  gpointer user_data);
99 void bst_file_dialog_set_handler (BstFileDialog *self,
100  BstFileDialogHandler handler,
101  gpointer handler_data,
102  GDestroyNotify destroy);
103 
104 G_END_DECLS
105 
106 // == Flags Enumeration Operators in C++ ==
107 #ifdef __cplusplus
108 constexpr BstFileDialogMode operator& (BstFileDialogMode s1, BstFileDialogMode s2) { return BstFileDialogMode (s1 & (long long unsigned) s2); }
109 inline BstFileDialogMode& operator&= (BstFileDialogMode &s1, BstFileDialogMode s2) { s1 = s1 & s2; return s1; }
110 constexpr BstFileDialogMode operator| (BstFileDialogMode s1, BstFileDialogMode s2) { return BstFileDialogMode (s1 | (long long unsigned) s2); }
111 inline BstFileDialogMode& operator|= (BstFileDialogMode &s1, BstFileDialogMode s2) { s1 = s1 | s2; return s1; }
112 constexpr BstFileDialogMode operator~ (BstFileDialogMode s1) { return BstFileDialogMode (~(long long unsigned) s1); }
113 #endif // __cplusplus
114 
115 #endif /* __BST_FILE_DIALOG_H__ */
See also the corresponding IDL class Project.
Definition: bseclientapi.hh:1283
Definition: bstfiledialog.hh:43
Definition: bstfiledialog.hh:66