Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
chord_selector_window.h
Go to the documentation of this file.
1// clang-format off
2// SPDX-FileCopyrightText: © 2019-2022, 2024 Alexandros Theodotou <alex@zrythm.org>
3// SPDX-License-Identifier: LicenseRef-ZrythmLicense
4// clang-format on
5
12#ifndef __GUI_WIDGETS_CHORD_SELECTOR_WINDOW_H__
13#define __GUI_WIDGETS_CHORD_SELECTOR_WINDOW_H__
14
15#include <adwaita.h>
16
17#define CHORD_SELECTOR_WINDOW_WIDGET_TYPE \
18 (chord_selector_window_widget_get_type ())
19G_DECLARE_FINAL_TYPE (
21 chord_selector_window_widget,
22 Z,
23 CHORD_SELECTOR_WINDOW_WIDGET,
24 AdwDialog)
25
26
32typedef struct ChordObject ChordObject;
33typedef struct ScaleObject ScaleObject;
34
39typedef struct _ChordSelectorWindowWidget
40{
41 AdwDialog parent_instance;
42
43 GtkNotebook * notebook;
44
45 GtkFlowBox * diatonic_flowbox;
46 GtkFlowBoxChild * diatonic_i;
47 GtkFlowBoxChild * diatonic_ii;
48 GtkFlowBoxChild * diatonic_iii;
49 GtkFlowBoxChild * diatonic_iv;
50 GtkFlowBoxChild * diatonic_v;
51 GtkFlowBoxChild * diatonic_vi;
52 GtkFlowBoxChild * diatonic_vii;
53 GtkLabel * diatonic_i_lbl;
54 GtkLabel * diatonic_ii_lbl;
55 GtkLabel * diatonic_iii_lbl;
56 GtkLabel * diatonic_iv_lbl;
57 GtkLabel * diatonic_v_lbl;
58 GtkLabel * diatonic_vi_lbl;
59 GtkLabel * diatonic_vii_lbl;
60 GtkFlowBox * creator_root_note_flowbox;
61 GtkFlowBoxChild * creator_root_note_c;
62 GtkFlowBoxChild * creator_root_note_cs;
63 GtkFlowBoxChild * creator_root_note_d;
64 GtkFlowBoxChild * creator_root_note_ds;
65 GtkFlowBoxChild * creator_root_note_e;
66 GtkFlowBoxChild * creator_root_note_f;
67 GtkFlowBoxChild * creator_root_note_fs;
68 GtkFlowBoxChild * creator_root_note_g;
69 GtkFlowBoxChild * creator_root_note_gs;
70 GtkFlowBoxChild * creator_root_note_a;
71 GtkFlowBoxChild * creator_root_note_as;
72 GtkFlowBoxChild * creator_root_note_b;
73
75 GtkFlowBoxChild * creator_root_notes[12];
76
77 GtkFlowBox * creator_type_flowbox;
78 GtkFlowBoxChild * creator_type_maj;
79 GtkFlowBoxChild * creator_type_min;
80 GtkFlowBoxChild * creator_type_dim;
81 GtkFlowBoxChild * creator_type_sus4;
82 GtkFlowBoxChild * creator_type_sus2;
83 GtkFlowBoxChild * creator_type_aug;
84
86 GtkFlowBoxChild * creator_types[6];
87
88 GtkFlowBox * creator_accent_flowbox;
89 GtkFlowBoxChild * creator_accent_7;
90 GtkFlowBoxChild * creator_accent_j7;
91 GtkFlowBoxChild * creator_accent_b9;
92 GtkFlowBoxChild * creator_accent_9;
93 GtkFlowBoxChild * creator_accent_s9;
94 GtkFlowBoxChild * creator_accent_11;
95 GtkFlowBoxChild * creator_accent_b5_s11;
96 GtkFlowBoxChild * creator_accent_s5_b13;
97 GtkFlowBoxChild * creator_accent_6_13;
98
100 GtkFlowBoxChild * creator_accents[9];
101
102 GtkFlowBox * creator_bass_note_flowbox;
103 GtkFlowBoxChild * creator_bass_note_c;
104 GtkFlowBoxChild * creator_bass_note_cs;
105 GtkFlowBoxChild * creator_bass_note_d;
106 GtkFlowBoxChild * creator_bass_note_ds;
107 GtkFlowBoxChild * creator_bass_note_e;
108 GtkFlowBoxChild * creator_bass_note_f;
109 GtkFlowBoxChild * creator_bass_note_fs;
110 GtkFlowBoxChild * creator_bass_note_g;
111 GtkFlowBoxChild * creator_bass_note_gs;
112 GtkFlowBoxChild * creator_bass_note_a;
113 GtkFlowBoxChild * creator_bass_note_as;
114 GtkFlowBoxChild * creator_bass_note_b;
115
117 GtkFlowBoxChild * creator_bass_notes[12];
118
119 GtkCheckButton * creator_visibility_all;
120 GtkCheckButton * creator_visibility_in_scale;
121
124
127
130
132
138void
139chord_selector_window_widget_present (const int chord_idx, GtkWidget * parent);
140
145#endif
void chord_selector_window_widget_present(const int chord_idx, GtkWidget *parent)
Creates the popover.
A ChordDescriptor describes a chord and is not linked to any specific object by itself.
A ChordObject to be shown in the TimelineArrangerWidget.
A GtkPopover to create a ChordDescriptor for use in the ChordTrack's ChordObject's.
ChordDescriptor * descr_clone
Temporary copy of the chord descriptor.
int chord_idx
The index of the chord in the chord editor.
ScaleObject * scale
ScaleObject at the chord's position.
A ScaleObject to be shown in the TimelineArrangerWidget.