Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
chord_selector_window.h
1// SPDX-FileCopyrightText: © 2019-2022, 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __GUI_WIDGETS_CHORD_SELECTOR_WINDOW_H__
5#define __GUI_WIDGETS_CHORD_SELECTOR_WINDOW_H__
6
7#include <memory>
8
9#include "common/dsp/chord_descriptor.h"
10#include "gui/backend/gtk_widgets/libadwaita_wrapper.h"
11
12#define CHORD_SELECTOR_WINDOW_WIDGET_TYPE \
13 (chord_selector_window_widget_get_type ())
14G_DECLARE_FINAL_TYPE (
16 chord_selector_window_widget,
17 Z,
18 CHORD_SELECTOR_WINDOW_WIDGET,
19 AdwDialog)
20
21
26
27class ChordObject;
28class ScaleObject;
29
34using ChordSelectorWindowWidget = struct _ChordSelectorWindowWidget
35{
36 AdwDialog parent_instance;
37
38 GtkNotebook * notebook;
39
40 GtkFlowBox * diatonic_flowbox;
41 GtkFlowBoxChild * diatonic_i;
42 GtkFlowBoxChild * diatonic_ii;
43 GtkFlowBoxChild * diatonic_iii;
44 GtkFlowBoxChild * diatonic_iv;
45 GtkFlowBoxChild * diatonic_v;
46 GtkFlowBoxChild * diatonic_vi;
47 GtkFlowBoxChild * diatonic_vii;
48 GtkLabel * diatonic_i_lbl;
49 GtkLabel * diatonic_ii_lbl;
50 GtkLabel * diatonic_iii_lbl;
51 GtkLabel * diatonic_iv_lbl;
52 GtkLabel * diatonic_v_lbl;
53 GtkLabel * diatonic_vi_lbl;
54 GtkLabel * diatonic_vii_lbl;
55 GtkFlowBox * creator_root_note_flowbox;
56 GtkFlowBoxChild * creator_root_note_c;
57 GtkFlowBoxChild * creator_root_note_cs;
58 GtkFlowBoxChild * creator_root_note_d;
59 GtkFlowBoxChild * creator_root_note_ds;
60 GtkFlowBoxChild * creator_root_note_e;
61 GtkFlowBoxChild * creator_root_note_f;
62 GtkFlowBoxChild * creator_root_note_fs;
63 GtkFlowBoxChild * creator_root_note_g;
64 GtkFlowBoxChild * creator_root_note_gs;
65 GtkFlowBoxChild * creator_root_note_a;
66 GtkFlowBoxChild * creator_root_note_as;
67 GtkFlowBoxChild * creator_root_note_b;
68
70 GtkFlowBoxChild * creator_root_notes[12];
71
72 GtkFlowBox * creator_type_flowbox;
73 GtkFlowBoxChild * creator_type_maj;
74 GtkFlowBoxChild * creator_type_min;
75 GtkFlowBoxChild * creator_type_dim;
76 GtkFlowBoxChild * creator_type_sus4;
77 GtkFlowBoxChild * creator_type_sus2;
78 GtkFlowBoxChild * creator_type_aug;
79
81 GtkFlowBoxChild * creator_types[6];
82
83 GtkFlowBox * creator_accent_flowbox;
84 GtkFlowBoxChild * creator_accent_7;
85 GtkFlowBoxChild * creator_accent_j7;
86 GtkFlowBoxChild * creator_accent_b9;
87 GtkFlowBoxChild * creator_accent_9;
88 GtkFlowBoxChild * creator_accent_s9;
89 GtkFlowBoxChild * creator_accent_11;
90 GtkFlowBoxChild * creator_accent_b5_s11;
91 GtkFlowBoxChild * creator_accent_s5_b13;
92 GtkFlowBoxChild * creator_accent_6_13;
93
95 GtkFlowBoxChild * creator_accents[9];
96
97 GtkFlowBox * creator_bass_note_flowbox;
98 GtkFlowBoxChild * creator_bass_note_c;
99 GtkFlowBoxChild * creator_bass_note_cs;
100 GtkFlowBoxChild * creator_bass_note_d;
101 GtkFlowBoxChild * creator_bass_note_ds;
102 GtkFlowBoxChild * creator_bass_note_e;
103 GtkFlowBoxChild * creator_bass_note_f;
104 GtkFlowBoxChild * creator_bass_note_fs;
105 GtkFlowBoxChild * creator_bass_note_g;
106 GtkFlowBoxChild * creator_bass_note_gs;
107 GtkFlowBoxChild * creator_bass_note_a;
108 GtkFlowBoxChild * creator_bass_note_as;
109 GtkFlowBoxChild * creator_bass_note_b;
110
112 GtkFlowBoxChild * creator_bass_notes[12];
113
114 GtkCheckButton * creator_visibility_all;
115 GtkCheckButton * creator_visibility_in_scale;
116
118 ScaleObject * scale;
119
121 ChordDescriptor * descr_clone;
122
124 int chord_idx;
125};
126
132void
133chord_selector_window_widget_present (const int chord_idx, GtkWidget * parent);
134
138
139#endif
void chord_selector_window_widget_present(const int chord_idx, GtkWidget *parent)
Creates the popover.
struct _ChordSelectorWindowWidget { AdwDialog parent_instance; GtkNotebook *notebook; GtkFlowBox * diatonic_flowbox; GtkFlowBoxChild *diatonic_i; GtkFlowBoxChild *diatonic_ii; GtkFlowBoxChild *diatonic_iii; GtkFlowBoxChild *diatonic_iv; GtkFlowBoxChild *diatonic_v; GtkFlowBoxChild *diatonic_vi; GtkFlowBoxChild *diatonic_vii; GtkLabel * diatonic_i_lbl; GtkLabel * diatonic_ii_lbl; GtkLabel * diatonic_iii_lbl; GtkLabel * diatonic_iv_lbl; GtkLabel * diatonic_v_lbl; GtkLabel * diatonic_vi_lbl; GtkLabel * diatonic_vii_lbl; GtkFlowBox * creator_root_note_flowbox; GtkFlowBoxChild *creator_root_note_c; GtkFlowBoxChild *creator_root_note_cs; GtkFlowBoxChild *creator_root_note_d; GtkFlowBoxChild *creator_root_note_ds; GtkFlowBoxChild *creator_root_note_e; GtkFlowBoxChild *creator_root_note_f; GtkFlowBoxChild *creator_root_note_fs; GtkFlowBoxChild *creator_root_note_g; GtkFlowBoxChild *creator_root_note_gs; GtkFlowBoxChild *creator_root_note_a; GtkFlowBoxChild *creator_root_note_as; GtkFlowBoxChild *creator_root_note_b; GtkFlowBoxChild *creator_root_notes[12]; GtkFlowBox * creator_type_flowbox; GtkFlowBoxChild *creator_type_maj; GtkFlowBoxChild *creator_type_min; GtkFlowBoxChild *creator_type_dim; GtkFlowBoxChild *creator_type_sus4; GtkFlowBoxChild *creator_type_sus2; GtkFlowBoxChild *creator_type_aug; GtkFlowBoxChild *creator_types[6]; GtkFlowBox * creator_accent_flowbox; GtkFlowBoxChild *creator_accent_7; GtkFlowBoxChild *creator_accent_j7; GtkFlowBoxChild *creator_accent_b9; GtkFlowBoxChild *creator_accent_9; GtkFlowBoxChild *creator_accent_s9; GtkFlowBoxChild *creator_accent_11; GtkFlowBoxChild *creator_accent_b5_s11; GtkFlowBoxChild *creator_accent_s5_b13; GtkFlowBoxChild *creator_accent_6_13; GtkFlowBoxChild *creator_accents[9]; GtkFlowBox * creator_bass_note_flowbox; GtkFlowBoxChild *creator_bass_note_c; GtkFlowBoxChild *creator_bass_note_cs; GtkFlowBoxChild *creator_bass_note_d; GtkFlowBoxChild *creator_bass_note_ds; GtkFlowBoxChild *creator_bass_note_e; GtkFlowBoxChild *creator_bass_note_f; GtkFlowBoxChild *creator_bass_note_fs; GtkFlowBoxChild *creator_bass_note_g; GtkFlowBoxChild *creator_bass_note_gs; GtkFlowBoxChild *creator_bass_note_a; GtkFlowBoxChild *creator_bass_note_as; GtkFlowBoxChild *creator_bass_note_b; GtkFlowBoxChild *creator_bass_notes[12]; GtkCheckButton *creator_visibility_all; GtkCheckButton *creator_visibility_in_scale; ScaleObject *scale; ChordDescriptor *descr_clone; int chord_idx;} ChordSelectorWindowWidget
A GtkPopover to create a ChordDescriptor for use in the ChordTrack's ChordObject's.