banshee r4023 - in trunk/banshee: . libbanshee src/Backends/Banshee.GStreamer/Banshee.GStreamer src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.ThickClient/Resources
- From: abock svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r4023 - in trunk/banshee: . libbanshee src/Backends/Banshee.GStreamer/Banshee.GStreamer src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.ThickClient/Resources
- Date: Thu, 29 May 2008 15:39:47 +0000 (UTC)
Author: abock
Date: Thu May 29 15:39:46 2008
New Revision: 4023
URL: http://svn.gnome.org/viewvc/banshee?rev=4023&view=rev
Log:
2008-05-29 Aaron Bockover <abock gnome org>
* src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs:
Small rounding fix
* src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs:
Ported from glade, some fixes
* src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: Only allow one
instance of the equalizer to be shown; present the open version if exists
* src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade: Removed
the equalizer
* src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
* libbanshee/banshee-player-equalizer.c: White space cleanup
* libbanshee/banshee-player-pipeline.c: White space cleanup and removed
a redundant element link
Modified:
trunk/banshee/ChangeLog
trunk/banshee/libbanshee/banshee-player-equalizer.c
trunk/banshee/libbanshee/banshee-player-pipeline.c
trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs
trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade
Modified: trunk/banshee/libbanshee/banshee-player-equalizer.c
==============================================================================
--- trunk/banshee/libbanshee/banshee-player-equalizer.c (original)
+++ trunk/banshee/libbanshee/banshee-player-equalizer.c Thu May 29 15:39:46 2008
@@ -4,6 +4,7 @@
// Authors:
// Alexander Hixon <hixon alexander mediati org>
// Aaron Bockover <abockover novell com>
+// Sebastian DrÃge <slomo circular-chaos org>
//
// Copyright (C) 2005-2008 Novell, Inc.
//
Modified: trunk/banshee/libbanshee/banshee-player-pipeline.c
==============================================================================
--- trunk/banshee/libbanshee/banshee-player-pipeline.c (original)
+++ trunk/banshee/libbanshee/banshee-player-pipeline.c Thu May 29 15:39:46 2008
@@ -213,12 +213,12 @@
audiosinkqueue = gst_element_factory_make ("queue", "audiosinkqueue");
g_return_val_if_fail (audiosinkqueue != NULL, FALSE);
- audioconvert = gst_element_factory_make("audioconvert", "audioconvert");
- audioconvert2 = gst_element_factory_make("audioconvert", "audioconvert2");
- player->equalizer = gst_element_factory_make("equalizer-10bands", "equalizer-10bands");
- player->preamp = gst_element_factory_make("volume", "preamp");
+ audioconvert = gst_element_factory_make ("audioconvert", "audioconvert");
+ audioconvert2 = gst_element_factory_make ("audioconvert", "audioconvert2");
+ player->equalizer = gst_element_factory_make ("equalizer-10bands", "equalizer-10bands");
+ player->preamp = gst_element_factory_make ("volume", "preamp");
- /* Workaround for equalizer bug that caused clipping when processing integer samples */
+ // Workaround for equalizer bug that caused clipping when processing integer samples
if (player->equalizer != NULL) {
GstElementFactory *efactory = gst_element_get_factory (player->equalizer);
@@ -227,30 +227,33 @@
if (buggy_eq) {
GstCaps *caps;
- capsfilter = gst_element_factory_make("capsfilter", "capsfilter");
+ capsfilter = gst_element_factory_make ("capsfilter", "capsfilter");
caps = gst_caps_new_simple ("audio/x-raw-float", NULL);
g_object_set (capsfilter, "caps", caps, NULL);
gst_caps_unref (caps);
- }
+ }
}
// Add elements to custom audio sink
gst_bin_add (GST_BIN (player->audiobin), player->audiotee);
+
if (player->equalizer != NULL) {
gst_bin_add (GST_BIN (player->audiobin), audioconvert);
gst_bin_add (GST_BIN (player->audiobin), audioconvert2);
- if (buggy_eq)
+ if (buggy_eq) {
gst_bin_add (GST_BIN (player->audiobin), capsfilter);
-
+ }
+
gst_bin_add (GST_BIN (player->audiobin), player->equalizer);
gst_bin_add (GST_BIN (player->audiobin), player->preamp);
} else {
- g_object_unref(player->preamp);
+ g_object_unref (player->preamp);
player->preamp = NULL;
- g_object_unref(audioconvert);
- g_object_unref(audioconvert2);
+ g_object_unref (audioconvert);
+ g_object_unref (audioconvert2);
}
+
gst_bin_add (GST_BIN (player->audiobin), audiosinkqueue);
gst_bin_add (GST_BIN (player->audiobin), audiosink);
@@ -266,17 +269,18 @@
// Link the queue and the actual audio sink
if (player->equalizer != NULL) {
// link in equalizer, preamp and audioconvert.
- if (buggy_eq)
- gst_element_link_many (audiosinkqueue, audioconvert, player->preamp, player->equalizer, audioconvert2, audiosink, NULL);
- else
- gst_element_link_many (audiosinkqueue, audioconvert, capsfilter, player->preamp, player->equalizer, audioconvert2, audiosink, NULL);
+ if (buggy_eq) {
+ gst_element_link_many (audiosinkqueue, audioconvert, player->preamp,
+ player->equalizer, audioconvert2, audiosink, NULL);
+ } else {
+ gst_element_link_many (audiosinkqueue, audioconvert, capsfilter,
+ player->preamp, player->equalizer, audioconvert2, audiosink, NULL);
+ }
} else {
// link the queue with the real audio sink
gst_element_link (audiosinkqueue, audiosink);
}
- gst_element_link (audiosinkqueue, audiosink);
-
// Now that our internal audio sink is constructed, tell playbin to use it
g_object_set (G_OBJECT (player->playbin), "audio-sink", player->audiobin, NULL);
@@ -303,7 +307,7 @@
if (GST_IS_ELEMENT (player->playbin)) {
player->target_state = GST_STATE_NULL;
gst_element_set_state (player->playbin, GST_STATE_NULL);
- gst_object_unref (GST_OBJECT(player->playbin));
+ gst_object_unref (GST_OBJECT (player->playbin));
}
player->playbin = NULL;
Modified: trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
==============================================================================
--- trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs (original)
+++ trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs Thu May 29 15:39:46 2008
@@ -396,7 +396,7 @@
public uint [] EqualizerFrequencies {
get {
- uint count = bp_equalizer_get_nbands (handle);
+ uint count = bp_equalizer_get_nbands (handle);
double [] freq = new double[count];
bp_equalizer_get_frequencies (handle, out freq);
@@ -515,7 +515,7 @@
[DllImport ("libbanshee")]
private static extern void bp_equalizer_get_bandrange (HandleRef player, out int min, out int max);
- [DllImport ("libbanshee")]
+ [DllImport ("libbanshee")]
private static extern uint bp_equalizer_get_nbands (HandleRef player);
[DllImport ("libbanshee")]
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs Thu May 29 15:39:46 2008
@@ -60,7 +60,7 @@
{
Spacing = 10;
- int[] br = ((IEqualizer) ServiceManager.PlayerEngine.ActiveEngine).BandRange;
+ int [] br = ((IEqualizer)ServiceManager.PlayerEngine.ActiveEngine).BandRange;
int mid = (br[0] + br[1]) / 2;
range[0] = br[0];
@@ -89,15 +89,12 @@
BuildBands ();
}
- /// <summary>
- /// Utility function to create a dB string for the levels box.
- /// </summary>
private string FormatDecibelString (int db)
{
if (db > 0) {
- return String.Format("+{0} dB", db);
+ return String.Format ("+{0} dB", db);
} else {
- return String.Format("{0} dB", db);
+ return String.Format ("{0} dB", db);
}
}
@@ -117,10 +114,10 @@
for (uint i = 0; i < 10; i++) {
string label = frequencies[i] < 1000 ?
- String.Format("{0} Hz", frequencies[i]) :
- String.Format("{0} kHz", frequencies[i] / 1000);
+ String.Format ("{0} Hz", frequencies[i]) :
+ String.Format ("{0} kHz", (int)Math.Round (frequencies[i] / 1000.0));
- band_scales[i] = new EqualizerBandScale(i, range[1] * 10, range[0] * 10, range[2] * 10, label);
+ band_scales[i] = new EqualizerBandScale (i, range[1] * 10, range[0] * 10, range[2] * 10, label);
band_scales[i].ValueChanged += OnEqualizerValueChanged;
band_scales[i].Show ();
@@ -157,7 +154,7 @@
public uint [] Frequencies {
get { return (uint [])frequencies.Clone (); }
set {
- frequencies = (uint []) value.Clone ();
+ frequencies = (uint [])value.Clone ();
BuildBands ();
}
}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs Thu May 29 15:39:46 2008
@@ -28,55 +28,84 @@
//
using System;
-using System.Collections;
using Mono.Unix;
using Gtk;
-using Glade;
-using Banshee.Base;
-using Banshee.Gui.Dialogs;
-using Banshee.Gui.Widgets;
using Banshee.ServiceStack;
using Banshee.MediaEngine;
using Banshee.Equalizer;
namespace Banshee.Equalizer.Gui
{
- public class EqualizerWindow : GladeWindow
+ public class EqualizerWindow : Window
{
private EqualizerView eq_view;
private EqualizerPresetComboBox eq_preset_combo;
- [Widget] private CheckButton eq_enabled_checkbox;
+ private CheckButton eq_enabled_checkbox;
+ private HBox header_box;
- public EqualizerWindow () : base ("EqualizerWindow")
+ private static EqualizerWindow instance;
+ public static EqualizerWindow Instance {
+ get { return instance; }
+ }
+
+ public EqualizerWindow (Window parent) : base (Catalog.GetString ("Equalizer"))
{
+ if (instance == null) {
+ instance = this;
+ }
+
+ TransientFor = parent;
+ WindowPosition = WindowPosition.CenterOnParent;
+ TypeHint = Gdk.WindowTypeHint.Dialog;
+ SkipPagerHint = true;
+ SkipTaskbarHint = true;
+ AppPaintable = true;
+
+ SetDefaultSize (-1, 180);
+
+ VBox box = new VBox ();
+ header_box = new HBox ();
+ header_box.BorderWidth = 4;
+ header_box.Spacing = 2;
+
+ box.PackStart (header_box, false, false, 0);
+ box.PackStart (new HSeparator (), false, false, 0);
+
eq_view = new EqualizerView ();
eq_view.BorderWidth = 10;
eq_view.SetSizeRequest (-1, 110);
- eq_view.Frequencies = ((IEqualizer) ServiceManager.PlayerEngine.ActiveEngine).EqualizerFrequencies;
+ eq_view.Frequencies = ((IEqualizer)ServiceManager.PlayerEngine.ActiveEngine).EqualizerFrequencies;
eq_view.Show ();
- eq_enabled_checkbox = (Glade["eq_enabled_checkbox"] as CheckButton);
+ eq_enabled_checkbox = new CheckButton (Catalog.GetString ("Enabled"));
eq_preset_combo = new EqualizerPresetComboBox ();
eq_preset_combo.Changed += OnPresetChanged;
eq_preset_combo.Show ();
- Window.Realized += delegate {
- Widget header = Glade["eq_header_evbox"];
- header.ModifyBg (StateType.Normal, header.Style.Background (StateType.Active));
- Window.Show ();
- };
-
- (Glade["eq_view_box"] as Box).PackStart (eq_view, true, true, 0);
- (Glade["eq_preset_box"] as Box).PackStart (eq_preset_combo, true, false, 0);
- (Glade["new_preset_button"] as Button).Clicked += OnNewPreset;
- (Glade["delete_preset_button"] as Button).Clicked += OnDeletePreset;
+ Button new_preset_button = new Button (new Image (Stock.Add, IconSize.Button));
+ new_preset_button.Relief = ReliefStyle.None;
+ new_preset_button.Clicked += OnNewPreset;
+
+ Button delete_preset_button = new Button (new Image (Stock.Remove, IconSize.Button));
+ delete_preset_button.Relief = ReliefStyle.None;
+ delete_preset_button.Clicked += OnDeletePreset;
+
+ VBox combo_box = new VBox ();
+ combo_box.PackStart (eq_preset_combo, true, false, 0);
+
+ header_box.PackStart (combo_box, false, false, 0);
+ header_box.PackStart (new_preset_button, false, false, 0);
+ header_box.PackStart (delete_preset_button, false, false, 0);
+ header_box.PackEnd (eq_enabled_checkbox, false, false, 0);
+
+ box.PackStart (eq_view, true, true, 0);
eq_enabled_checkbox.Active = EqualizerSetting.EnabledSchema.Get ();
eq_preset_combo.ActivatePreferredEqualizer (EqualizerSetting.PresetSchema.Get ());
- if(eq_enabled_checkbox.Active) {
+ if (eq_enabled_checkbox.Active) {
// enable equalizer if was enabled last session
EqualizerManager.Instance.Enable (eq_preset_combo.ActiveEqualizer);
}
@@ -87,10 +116,32 @@
// enable our new preset (it has no effect though, since all bands are 0db)
eq_enabled_checkbox.Active = true;
- OnEnableDisable (null, null); // notify engine and save it for next session
+ OnEnableDisable (null, null);
}
eq_enabled_checkbox.Clicked += OnEnableDisable;
+
+ Gdk.Geometry limits = new Gdk.Geometry ();
+ limits.MinWidth = -1;
+ limits.MaxWidth = -1;
+ limits.MinHeight = SizeRequest ().Height;
+ limits.MaxHeight = Gdk.Screen.Default.Height;
+ SetGeometryHints (this, limits, Gdk.WindowHints.MaxSize);
+
+ Add (box);
+ box.ShowAll ();
+ }
+
+ protected override void OnDestroyed ()
+ {
+ instance = null;
+ base.OnDestroyed ();
+ }
+
+ protected override bool OnExposeEvent (Gdk.EventExpose evnt)
+ {
+ GdkWindow.DrawRectangle (Style.BackgroundGC (StateType.Active), true, header_box.Allocation);
+ return base.OnExposeEvent (evnt);
}
private void OnNewPreset (object o, EventArgs args)
@@ -108,7 +159,7 @@
private void OnPresetChanged (object o, EventArgs args)
{
- if(eq_preset_combo.ActiveEqualizer != eq_view.EqualizerSetting) {
+ if (eq_preset_combo.ActiveEqualizer != eq_view.EqualizerSetting) {
eq_view.EqualizerSetting = eq_preset_combo.ActiveEqualizer;
OnEnableDisable (null, null);
}
@@ -117,9 +168,9 @@
private void OnEnableDisable (object o, EventArgs args)
{
if (eq_enabled_checkbox.Active) {
- EqualizerManager.Instance.Enable(eq_preset_combo.ActiveEqualizer);
+ EqualizerManager.Instance.Enable (eq_preset_combo.ActiveEqualizer);
} else {
- EqualizerManager.Instance.Disable(eq_preset_combo.ActiveEqualizer);
+ EqualizerManager.Instance.Disable (eq_preset_combo.ActiveEqualizer);
}
}
}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs Thu May 29 15:39:46 2008
@@ -92,8 +92,12 @@
private void OnShowEqualizer (object o, EventArgs args)
{
- EqualizerWindow eqwin = new EqualizerWindow ();
- eqwin.Window.Show ();
+ if (EqualizerWindow.Instance == null) {
+ EqualizerWindow eqwin = new EqualizerWindow (ServiceManager.Get<GtkElementsService> ().PrimaryWindow);
+ eqwin.Show ();
+ } else {
+ EqualizerWindow.Instance.Present ();
+ }
}
private void OnFullScreen (object o, EventArgs args)
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade Thu May 29 15:39:46 2008
@@ -1977,130 +1977,6 @@
</widget>
</child>
</widget>
- <widget class="GtkWindow" id="EqualizerWindow">
- <property name="title" translatable="yes">Equalizer</property>
- <property name="window_position">GTK_WIN_POS_CENTER</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="skip_taskbar_hint">True</property>
- <property name="skip_pager_hint">True</property>
- <child>
- <widget class="GtkVBox" id="eq_view_box">
- <property name="visible">True</property>
- <child>
- <widget class="GtkEventBox" id="eq_header_evbox">
- <property name="visible">True</property>
- <child>
- <widget class="GtkHBox" id="eq_header_box">
- <property name="visible">True</property>
- <property name="border_width">4</property>
- <child>
- <widget class="GtkVBox" id="eq_preset_box">
- <property name="visible">True</property>
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="new_preset_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Create a new preset</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
- <child>
- <widget class="GtkImage" id="image18">
- <property name="visible">True</property>
- <property name="stock">gtk-add</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="delete_preset_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Delete the active preset</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
- <child>
- <widget class="GtkImage" id="image19">
- <property name="visible">True</property>
- <property name="stock">gtk-remove</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment16">
- <property name="visible">True</property>
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVBox" id="vbox23">
- <property name="visible">True</property>
- <child>
- <widget class="GtkCheckButton" id="eq_enabled_checkbox">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Enabled</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">4</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHSeparator" id="hseparator2">
- <property name="visible">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="GtkDialog" id="SmartPlaylistEditorDialog">
<property name="border_width">5</property>
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]