1 /* GSequencer - Advanced GTK Sequencer
2  * Copyright (C) 2005-2019 Joël Krähemann
3  *
4  * This file is part of GSequencer.
5  *
6  * GSequencer is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSequencer is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef __AGS_CONNECTION_EDITOR_H__
21 #define __AGS_CONNECTION_EDITOR_H__
22 
23 #include <glib.h>
24 #include <glib-object.h>
25 
26 #include <gtk/gtk.h>
27 
28 #include <ags/libags.h>
29 #include <ags/libags-audio.h>
30 #include <ags/libags-gui.h>
31 
32 #include <ags/X/ags_machine.h>
33 #include <ags/X/ags_property_collection_editor.h>
34 
35 G_BEGIN_DECLS
36 
37 #define AGS_TYPE_CONNECTION_EDITOR                (ags_connection_editor_get_type())
38 #define AGS_CONNECTION_EDITOR(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_CONNECTION_EDITOR, AgsConnectionEditor))
39 #define AGS_CONNECTION_EDITOR_CLASS(class)        (G_TYPE_CHECK_CLASS_CAST((class), AGS_TYPE_CONNECTION_EDITOR, AgsConnectionEditorClass))
40 #define AGS_IS_CONNECTION_EDITOR(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AGS_TYPE_CONNECTION_EDITOR))
41 #define AGS_IS_CONNECTION_EDITOR_CLASS(class)     (G_TYPE_CHECK_CLASS_TYPE ((class), AGS_TYPE_CONNECTION_EDITOR))
42 #define AGS_CONNECTION_EDITOR_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), AGS_TYPE_CONNECTION_EDITOR, AgsConnectionEditorClass))
43 
44 #define AGS_CONNECTION_EDITOR_DEFAULT_VERSION "2.0.0"
45 #define AGS_CONNECTION_EDITOR_DEFAULT_BUILD_ID "Sun Aug 26 19:06:10 UTC 2018"
46 
47 typedef struct _AgsConnectionEditor AgsConnectionEditor;
48 typedef struct _AgsConnectionEditorClass AgsConnectionEditorClass;
49 
50 typedef enum{
51   AGS_CONNECTION_EDITOR_CONNECTED                 = 1,
52   AGS_CONNECTION_EDITOR_CLOSING                   = 1 <<  1,
53   AGS_CONNECTION_EDITOR_SHOW_OUTPUT               = 1 <<  2,
54   AGS_CONNECTION_EDITOR_SHOW_INPUT                = 1 <<  3,
55 }AgsConnectionEditorFlags;
56 
57 struct _AgsConnectionEditor
58 {
59   GtkDialog dialog;
60 
61   guint flags;
62 
63   gchar *version;
64   gchar *build_id;
65 
66   AgsMachine *machine;
67 
68   GtkNotebook *notebook;
69 
70   GtkScrolledWindow *output_listing_editor_scrolled_window;
71   AgsPropertyCollectionEditor *output_listing_editor;
72 
73   GtkScrolledWindow *input_listing_editor_scrolled_window;
74   AgsPropertyCollectionEditor *input_listing_editor;
75 
76   GtkScrolledWindow *output_connection_editor_scrolled_window;
77   AgsPropertyCollectionEditor *output_connection_editor;
78 
79   GtkScrolledWindow *input_connection_editor_scrolled_window;
80   AgsPropertyCollectionEditor *input_connection_editor;
81 
82   GtkButton *apply;
83   GtkButton *ok;
84   GtkButton *cancel;
85 };
86 
87 struct _AgsConnectionEditorClass
88 {
89   GtkDialogClass dialog;
90 
91   void (*set_machine)(AgsConnectionEditor *connection_editor,
92 		      AgsMachine *machine);
93 };
94 
95 GType ags_connection_editor_get_type(void);
96 
97 void ags_connection_editor_set_machine(AgsConnectionEditor *connection_editor,
98 				       AgsMachine *machine);
99 
100 AgsConnectionEditor* ags_connection_editor_new(AgsMachine *machine);
101 
102 G_END_DECLS
103 
104 #endif /*__AGS_CONNECTION_EDITOR_H__*/
105