10#ifndef __GUI_WIDGETS_ARRANGER_H__
11#define __GUI_WIDGETS_ARRANGER_H__
15#include "gui/widgets/main_window.h"
18#include "gtk_wrapper.h"
20#define ARRANGER_WIDGET_TYPE (arranger_widget_get_type ())
21G_DECLARE_FINAL_TYPE (
ArrangerWidget, arranger_widget, Z, ARRANGER_WIDGET, GtkWidget)
23typedef struct _ArrangerBgWidget ArrangerBgWidget;
28typedef struct _GtkEventControllerMotion GtkEventControllerMotion;
43#define ARRANGER_WIDGET_GET_ACTION(arr, actn) \
44 (arr->action == UI_OVERLAY_ACTION_##actn)
50 ARRANGER_CURSOR_SELECT,
51 ARRANGER_CURSOR_SELECT_STRETCH,
53 ARRANGER_CURSOR_AUTOFILL,
55 ARRANGER_CURSOR_ERASER,
56 ARRANGER_CURSOR_AUDITION,
59 ARRANGER_CURSOR_GRABBING,
60 ARRANGER_CURSOR_RESIZING_L,
61 ARRANGER_CURSOR_RESIZING_L_FADE,
62 ARRANGER_CURSOR_STRETCHING_L,
63 ARRANGER_CURSOR_RESIZING_L_LOOP,
64 ARRANGER_CURSOR_RESIZING_R,
65 ARRANGER_CURSOR_RESIZING_R_FADE,
66 ARRANGER_CURSOR_STRETCHING_R,
67 ARRANGER_CURSOR_RESIZING_R_LOOP,
68 ARRANGER_CURSOR_RESIZING_UP,
69 ARRANGER_CURSOR_RESIZING_UP_FADE_IN,
70 ARRANGER_CURSOR_RESIZING_UP_FADE_OUT,
71 ARRANGER_CURSOR_GRABBING_COPY,
72 ARRANGER_CURSOR_GRABBING_LINK,
73 ARRANGER_CURSOR_RANGE,
74 ARRANGER_CURSOR_FADE_IN,
75 ARRANGER_CURSOR_FADE_OUT,
76 ARRANGER_CURSOR_RENAME,
77 ARRANGER_CURSOR_PANNING,
85 ARRANGER_WIDGET_TYPE_TIMELINE,
86 ARRANGER_WIDGET_TYPE_MIDI,
87 ARRANGER_WIDGET_TYPE_MIDI_MODIFIER,
88 ARRANGER_WIDGET_TYPE_AUDIO,
89 ARRANGER_WIDGET_TYPE_CHORD,
90 ARRANGER_WIDGET_TYPE_AUTOMATION,
94typedef enum ArrangerWidgetHoverType
96 ARRANGER_WIDGET_HOVER_TYPE_NONE,
97 ARRANGER_WIDGET_HOVER_TYPE_TRACK,
98 ARRANGER_WIDGET_HOVER_TYPE_TRACK_LANE,
99 ARRANGER_WIDGET_HOVER_TYPE_AUTOMATION_TRACK,
100} ArrangerWidgetHoverType;
107typedef struct _ArrangerWidget
109 GtkWidget parent_instance;
114 GtkGestureDrag * drag;
115 GtkGestureClick * click;
116 GtkGestureClick * right_click;
117 GtkEventControllerMotion * motion_controller;
121 double last_offset_y;
128 double offset_y_from_scroll;
238 gboolean key_is_pressed;
261 gint64 last_frame_time;
295 Track * hovered_track;
298 GdkTexture * symbolic_link_texture;
299 GdkTexture * music_note_16th_texture;
300 GdkTexture * fork_awesome_snowflake_texture;
301 GdkTexture * media_playlist_repeat_texture;
308 GskRenderNode * clip_start_line_node;
309 GskRenderNode * cut_line_node;
353 double dval_at_start;
584arranger_widget_select_all (
ArrangerWidget * self,
bool select,
bool fire_events);
619 GtkEventControllerKey * key_controller,
622 GdkModifierType state,
626arranger_widget_on_key_release (
627 GtkEventControllerKey * key_controller,
630 GdkModifierType state,
695arranger_widget_handle_playhead_auto_scroll (
ArrangerWidget * self,
bool force);
697typedef void (*ArrangerWidgetForeachFunc) (
ArrangerWidget * arranger);
722#define arranger_widget_print_action(self) \
723 g_debug ("action: %s", ui_overlay_strings[self->action])
TransportDisplay
Corrseponts to "transport-display" in the gsettings.
ArrangerObjectType
The type of the object.
UiOverlayAction
Various overlay actions to be shared.
Base struct for arranger objects.
An automation point inside an AutomationTrack.
A MIDI note inside a Region shown in the piano roll.
A Position is made up of bars.beats.sixteenths.ticks.
A region (clip) is an object on the timeline that contains either MidiNote's or AudioClip's.
A TrackLane belongs to a Track (can have many TrackLanes in a Track) and contains Regions.
Track to be inserted into the Project's Tracklist.