Browse Source

Add meters to top right header

Implements https://todo.sr.ht/~alextee/zrythm-feature/518.
translate
Alexandros Theodotou 3 months ago
parent
commit
2ca8b50d98
Signed by: alex
GPG Key ID: 022EAE42313D70F3
  1. 2
      .reuse/dep5
  2. 1
      inc/gui/widgets/header.h
  3. 13
      inc/gui/widgets/meter.h
  4. 20
      resources/ui/header.ui
  5. 4
      src/audio/engine.c
  6. 12
      src/gui/widgets/header.c
  7. 4
      src/gui/widgets/live_waveform.c
  8. 20
      src/gui/widgets/meter.c
  9. 2
      src/gui/widgets/spectrum_analyzer.c

2
.reuse/dep5

@ -523,7 +523,7 @@ Files: @@ -523,7 +523,7 @@ Files:
resources/ui/*.ui
resources/gtk/help-overlay.ui
resources/gtk/menus.ui
Copyright: 2019-2022 Alexandros Theodotou <alex@zrythm.org>
Copyright: 2019-2023 Alexandros Theodotou <alex@zrythm.org>
License: LicenseRef-ZrythmLicense
Comment: UI XML files

1
inc/gui/widgets/header.h

@ -54,6 +54,7 @@ typedef struct _HeaderWidget @@ -54,6 +54,7 @@ typedef struct _HeaderWidget
SpectrumAnalyzerWidget * spectrum_analyzer;
MidiActivityBarWidget * midi_activity;
GtkLabel * midi_in_lbl;
GtkBox * meter_box;
} HeaderWidget;
void

13
inc/gui/widgets/meter.h

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: © 2019-2021 Alexandros Theodotou <alex@zrythm.org>
// SPDX-FileCopyrightText: © 2019-2021, 2023 Alexandros Theodotou <alex@zrythm.org>
// SPDX-License-Identifier: LicenseRef-ZrythmLicense
/** \file
@ -51,12 +51,19 @@ typedef struct _MeterWidget @@ -51,12 +51,19 @@ typedef struct _MeterWidget
} MeterWidget;
/**
* Creates a new Meter widget and binds it to the
* given value.
* Sets up an existing meter and binds it to the given port.
*
* @param port Port this meter is for.
*/
void
meter_widget_setup (MeterWidget * self, Port * port, int width);
/**
* Creates a new MeterWidget and binds it to the given port.
*
* @param port Port this meter is for.
*/
MeterWidget *
meter_widget_new (Port * port, int width);
#endif

20
resources/ui/header.ui

@ -78,29 +78,43 @@ @@ -78,29 +78,43 @@
</child>
<child>
<object class="MidiActivityBarWidget" id="midi_activity">
<property name="visible">1</property>
</object>
</child>
</object>
</child>
<child>
<object class="LiveWaveformWidget" id="live_waveform">
<property name="visible">True</property>
<property name="width-request">48</property>
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<property name="margin_start">4</property>
<property name="margin_end">4</property>
<property name="tooltip-text" translatable="yes">Live Waveform Indicator</property>
<style>
<class name="signal-preview"/>
</style>
</object>
</child>
<child>
<object class="SpectrumAnalyzerWidget" id="spectrum_analyzer">
<property name="visible">True</property>
<property name="width-request">128</property>
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<property name="margin_start">4</property>
<property name="margin_end">4</property>
<property name="tooltip-text" translatable="yes">Spectrum Analyzer</property>
<style>
<class name="signal-preview"/>
</style>
</object>
</child>
<child>
<object class="GtkBox" id="meter_box">
<property name="margin_top">4</property>
<property name="margin_bottom">4</property>
<property name="margin_start">4</property>
<property name="margin_end">4</property>
<property name="tooltip-text" translatable="yes">Peak Meter</property>
</object>
</child>
</object>

4
src/audio/engine.c

@ -1545,8 +1545,8 @@ engine_process ( @@ -1545,8 +1545,8 @@ engine_process (
return 0;
}
/* Work around a bug in Pipewire that doesn't inform the
* host about buffer size (block length) changes */
/* Work around a bug in Pipewire that doesn't inform the
* host about buffer size (block length) changes */
#ifdef HAVE_JACK
if (
self->audio_backend == AUDIO_BACKEND_JACK

12
src/gui/widgets/header.c

@ -3,18 +3,22 @@ @@ -3,18 +3,22 @@
#include "zrythm-config.h"
#include "audio/master_track.h"
#include "audio/tracklist.h"
#include "gui/accel.h"
#include "gui/widgets/gtk_flipper.h"
#include "gui/widgets/header.h"
#include "gui/widgets/help_toolbar.h"
#include "gui/widgets/home_toolbar.h"
#include "gui/widgets/live_waveform.h"
#include "gui/widgets/meter.h"
#include "gui/widgets/midi_activity_bar.h"
#include "gui/widgets/project_toolbar.h"
#include "gui/widgets/snap_grid.h"
#include "gui/widgets/spectrum_analyzer.h"
#include "gui/widgets/toolbox.h"
#include "gui/widgets/view_toolbar.h"
#include "project.h"
#include "utils/gtk.h"
#include "utils/resources.h"
@ -82,6 +86,13 @@ header_widget_init (HeaderWidget * self) @@ -82,6 +86,13 @@ header_widget_init (HeaderWidget * self)
midi_activity_bar_widget_set_animation (
self->midi_activity, MAB_ANIMATION_FLASH);
MeterWidget * l = meter_widget_new (
P_MASTER_TRACK->channel->stereo_out->l, 8);
MeterWidget * r = meter_widget_new (
P_MASTER_TRACK->channel->stereo_out->r, 8);
gtk_box_append (self->meter_box, GTK_WIDGET (l));
gtk_box_append (self->meter_box, GTK_WIDGET (r));
/* set tooltips */
char about_tooltip[500];
sprintf (about_tooltip, _ ("About %s"), PROGRAM_NAME);
@ -107,6 +118,7 @@ header_widget_class_init (HeaderWidgetClass * _klass) @@ -107,6 +118,7 @@ header_widget_class_init (HeaderWidgetClass * _klass)
BIND_CHILD (live_waveform);
BIND_CHILD (spectrum_analyzer);
BIND_CHILD (midi_activity);
BIND_CHILD (meter_box);
#undef BIND_CHILD

4
src/gui/widgets/live_waveform.c

@ -271,11 +271,7 @@ finalize (LiveWaveformWidget * self) @@ -271,11 +271,7 @@ finalize (LiveWaveformWidget * self)
static void
live_waveform_widget_init (LiveWaveformWidget * self)
{
gtk_widget_set_tooltip_text (
GTK_WIDGET (self), _ ("Live waveform indicator"));
gdk_rgba_parse (&self->color_green, "#11FF44");
gtk_widget_add_css_class (
GTK_WIDGET (self), "signal-preview");
gtk_widget_set_overflow (
GTK_WIDGET (self), GTK_OVERFLOW_HIDDEN);
}

20
src/gui/widgets/meter.c

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: © 2018-2022 Alexandros Theodotou <alex@zrythm.org>
// SPDX-FileCopyrightText: © 2018-2023 Alexandros Theodotou <alex@zrythm.org>
// SPDX-License-Identifier: LicenseRef-ZrythmLicense
#include "audio/channel.h"
@ -225,8 +225,7 @@ meter_timeout ( @@ -225,8 +225,7 @@ meter_timeout (
#endif
/**
* Creates a new Meter widget and binds it to the
* given value.
* Sets up an existing meter and binds it to the given port.
*
* @param port Port this meter is for.
*/
@ -263,6 +262,21 @@ meter_widget_setup (MeterWidget * self, Port * port, int width) @@ -263,6 +262,21 @@ meter_widget_setup (MeterWidget * self, Port * port, int width)
g_message ("meter widget set up for %s", buf);
}
/**
* Creates a new MeterWidget and binds it to the given port.
*
* @param port Port this meter is for.
*/
MeterWidget *
meter_widget_new (Port * port, int width)
{
MeterWidget * self = g_object_new (METER_WIDGET_TYPE, NULL);
meter_widget_setup (self, port, width);
return self;
}
static void
finalize (MeterWidget * self)
{

2
src/gui/widgets/spectrum_analyzer.c

@ -428,8 +428,6 @@ spectrum_analyzer_widget_init (SpectrumAnalyzerWidget * self) @@ -428,8 +428,6 @@ spectrum_analyzer_widget_init (SpectrumAnalyzerWidget * self)
gtk_widget_add_tick_callback (
GTK_WIDGET (self), (GtkTickCallback) update_activity,
self, NULL);
gtk_widget_add_css_class (
GTK_WIDGET (self), "signal-preview");
gtk_widget_set_overflow (
GTK_WIDGET (self), GTK_OVERFLOW_HIDDEN);
}

Loading…
Cancel
Save