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



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]