[SCM] jack-mixer packaging branch, upstream, updated. upstream/mixer-7-2-gb9d9a2c

rosea-guest at users.alioth.debian.org rosea-guest at users.alioth.debian.org
Wed Dec 16 21:48:04 UTC 2009


The following commit has been merged in the upstream branch:
commit b9d9a2cd38718a935e14b83c87290cd5408cda23
Author: Rosea Grammostola <rosea.grammostola at gmail.com>
Date:   Wed Dec 16 22:25:12 2009 +0100

    Revert "Imported Upstream version mixer-8"
    
    This reverts commit ae785834bf0b407f75fcd69de6833aa8a148e7db.

diff --git a/NEWS b/NEWS
index 30a16ff..c3fb536 100644
--- a/NEWS
+++ b/NEWS
@@ -1,13 +1,4 @@
 =========
-Version 8
-=========
-
- * Fix private modules lookup
- * Fix rotation of output channel colours
- * New menu items to remove output channels
- * New command line parameter to not connect to LASH
-
-=========
 Version 7
 =========
 
diff --git a/abspeak.py b/abspeak.py
index af76bf2..1b65c95 100644
--- a/abspeak.py
+++ b/abspeak.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -20,7 +22,7 @@ import fpconst
 import pango
 import gobject
 
-class AbspeakWidget(gtk.EventBox):
+class widget(gtk.EventBox):
     def __init__(self):
         gtk.EventBox.__init__(self)
         self.label = gtk.Label()
@@ -56,7 +58,5 @@ class AbspeakWidget(gtk.EventBox):
 
             self.label.set_text(text)
 
-gobject.signal_new("reset", AbspeakWidget,
-                   gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [])
-gobject.signal_new("volume-adjust", AbspeakWidget,
-                   gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [gobject.TYPE_FLOAT])
+gobject.signal_new("reset", widget, gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [])
+gobject.signal_new("volume-adjust", widget, gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [gobject.TYPE_FLOAT])
diff --git a/aclocal.m4 b/aclocal.m4
index ea86b23..bddefdc 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1313,13 +1313,6 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
-m4_include([m4/jack.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
-m4_include([m4/python.m4])
 dnl AM_GCONF_SOURCE_2
 dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
 dnl  (i.e. pass to gconftool-2
@@ -1365,3 +1358,10 @@ AC_DEFUN([AM_GCONF_SOURCE_2],
   AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
 ])
 
+m4_include([m4/jack.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/python.m4])
diff --git a/channel.py b/channel.py
index d4d78cf..4fb555b 100644
--- a/channel.py
+++ b/channel.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -21,7 +23,7 @@ import glib
 import slider
 import meter
 import abspeak
-from serialization import SerializedObject
+from serialization import serialized_object
 
 try:
     import phat
@@ -29,9 +31,8 @@ except:
     phat = None
 
 
-class Channel(gtk.VBox, SerializedObject):
-    '''Widget with slider and meter used as base class for more specific
-       channel widgets'''
+class channel(gtk.VBox, serialized_object):
+    '''Widget with slider and meter used as base class for more specific channel widgets'''
     monitor_button = None
 
     def __init__(self, app, name, stereo):
@@ -43,7 +44,7 @@ class Channel(gtk.VBox, SerializedObject):
         self.stereo = stereo
         self.meter_scale = self.gui_factory.get_default_meter_scale()
         self.slider_scale = self.gui_factory.get_default_slider_scale()
-        self.slider_adjustment = slider.AdjustmentdBFS(self.slider_scale, 0.0)
+        self.slider_adjustment = slider.adjustment_dBFS(self.slider_scale, 0.0)
         self.balance_adjustment = gtk.Adjustment(0.0, -1.0, 1.0, 0.02)
         self.future_volume_midi_cc = None
         self.future_balance_midi_cc = None
@@ -72,9 +73,9 @@ class Channel(gtk.VBox, SerializedObject):
         self.create_slider_widget()
 
         if self.stereo:
-            self.meter = meter.StereoMeterWidget(self.meter_scale)
+            self.meter = meter.stereo(self.meter_scale)
         else:
-            self.meter = meter.MonoMeterWidget(self.meter_scale)
+            self.meter = meter.mono(self.meter_scale)
         self.on_vumeter_color_changed(self.gui_factory)
 
         self.meter.set_events(gtk.gdk.SCROLL_MASK)
@@ -85,7 +86,7 @@ class Channel(gtk.VBox, SerializedObject):
         self.gui_factory.connect('vumeter-color-scheme-changed', self.on_vumeter_color_changed)
         self.gui_factory.connect('use-custom-widgets-changed', self.on_custom_widgets_changed)
 
-        self.abspeak = abspeak.AbspeakWidget()
+        self.abspeak = abspeak.widget()
         self.abspeak.connect("reset", self.on_abspeak_reset)
         self.abspeak.connect("volume-adjust", self.on_abspeak_adjust)
 
@@ -135,7 +136,7 @@ class Channel(gtk.VBox, SerializedObject):
         #print "Default slider scale change detected."
         self.slider_scale = scale
         self.slider_adjustment.set_scale(scale)
-        self.channel.midi_scale = self.slider_scale.scale
+        self.channel.set_midi_scale(self.slider_scale.scale)
 
     def on_vumeter_color_changed(self, gui_factory, *args):
         color = gui_factory.get_vumeter_color()
@@ -179,8 +180,6 @@ class Channel(gtk.VBox, SerializedObject):
         self.update_volume(False)
 
     def read_meter(self):
-        if not self.channel:
-            return
         if self.stereo:
             meter_left, meter_right = self.channel.meter
             self.meter.set_values(meter_left, meter_right)
@@ -279,21 +278,19 @@ class Channel(gtk.VBox, SerializedObject):
             self.app.set_monitored_channel(self)
         self.monitor_button.set_active(True)
 
-gobject.signal_new('midi-event-received', Channel,
+gobject.signal_new('midi-event-received', channel,
                 gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION,
                 gobject.TYPE_NONE, ())
 
-class InputChannel(Channel):
-    post_fader_output_channel = None
-
+class input_channel(channel):
     def __init__(self, app, name, stereo):
-        Channel.__init__(self, app, name, stereo)
+        channel.__init__(self, app, name, stereo)
 
     def realize(self):
         self.channel = self.mixer.add_channel(self.channel_name, self.stereo)
         if self.channel == None:
             raise Exception,"Cannot create a channel"
-        Channel.realize(self)
+        channel.realize(self)
         if self.future_volume_midi_cc:
             self.channel.volume_midi_cc = self.future_volume_midi_cc
         if self.future_balance_midi_cc:
@@ -373,10 +370,6 @@ class InputChannel(Channel):
         self.vbox.pack_start(control_group, False)
         return control_group
 
-    def remove_control_group(self, channel):
-        ctlgroup = self.get_control_group(channel)
-        self.vbox.remove(ctlgroup)
-
     def update_control_group(self, channel):
         for control_group in self.vbox.get_children():
             if isinstance(control_group, ControlGroup):
@@ -391,12 +384,9 @@ class InputChannel(Channel):
         return None
 
     def unrealize(self):
-        Channel.unrealize(self)
-        if self.post_fader_output_channel:
-            self.post_fader_output_channel.remove()
-            self.post_fader_output_channel = None
+        channel.unrealize(self)
         self.channel.remove()
-        self.channel = None
+        self.channel = False
 
     channel_properties_dialog = None
     def on_channel_properties(self):
@@ -464,9 +454,8 @@ class InputChannel(Channel):
             return True
         return False
 
-    @classmethod
-    def serialization_name(cls):
-        return 'input_channel'
+    def serialization_name(self):
+        return input_channel_serialization_name()
 
     def serialize(self, object_backend):
         object_backend.add_property("name", self.channel_name)
@@ -474,7 +463,7 @@ class InputChannel(Channel):
             object_backend.add_property("type", "stereo")
         else:
             object_backend.add_property("type", "mono")
-        Channel.serialize(self, object_backend)
+        channel.serialize(self, object_backend)
 
     def unserialize_property(self, name, value):
         if name == "name":
@@ -487,7 +476,10 @@ class InputChannel(Channel):
             if value == "mono":
                 self.stereo = False
                 return True
-        return Channel.unserialize_property(self, name, value)
+        return channel.unserialize_property(self, name, value)
+
+def input_channel_serialization_name():
+    return "input_channel"
 
 
 available_colours = [
@@ -500,7 +492,7 @@ available_colours = [
     ('#e9b96e', '#c17d11', '#6f4902'),
 ]
 
-class OutputChannel(Channel):
+class output_channel(channel):
     colours = available_colours[:]
     _display_solo_buttons = False
 
@@ -508,7 +500,7 @@ class OutputChannel(Channel):
     _init_solo_channels = None
 
     def __init__(self, app, name, stereo):
-        Channel.__init__(self, app, name, stereo)
+        channel.__init__(self, app, name, stereo)
 
     def get_display_solo_buttons(self):
         return self._display_solo_buttons
@@ -522,11 +514,11 @@ class OutputChannel(Channel):
     display_solo_buttons = property(get_display_solo_buttons, set_display_solo_buttons)
 
     def realize(self):
-        Channel.realize(self)
+        channel.realize(self)
         self.channel = self.mixer.add_output_channel(self.channel_name, self.stereo)
         if self.channel == None:
             raise Exception,"Cannot create a channel"
-        Channel.realize(self)
+        channel.realize(self)
 
         self.channel.midi_scale = self.slider_scale.scale
         self.channel.midi_change_callback = self.midi_change_callback
@@ -544,7 +536,7 @@ class OutputChannel(Channel):
         self.label_name_event_box.connect('button-press-event', self.on_label_mouse)
         self.label_name_event_box.add(self.label_name)
         if not self.colours:
-            OutputChannel.colours = available_colours[:]
+            self.colours = available_colours[:]
         for color in self.colours:
             self.color_tuple = [gtk.gdk.color_parse(color[x]) for x in range(3)]
             self.colours.remove(color)
@@ -601,17 +593,11 @@ class OutputChannel(Channel):
                 self.on_channel_properties()
 
     def unrealize(self):
-        # remove control groups from input channels
-        for input_channel in self.app.channels:
-            input_channel.remove_control_group(self)
-        # then remove itself
-        Channel.unrealize(self)
-        self.channel.remove()
-        self.channel = None
+        channel.unrealize(self)
+        self.channel = False
 
-    @classmethod
-    def serialization_name(cls):
-        return 'output_channel'
+    def serialization_name(self):
+        return output_channel_serialization_name()
 
     def serialize(self, object_backend):
         object_backend.add_property("name", self.channel_name)
@@ -632,7 +618,7 @@ class OutputChannel(Channel):
             object_backend.add_property('muted_channels', '|'.join([x.channel.name for x in muted_channels]))
         if solo_channels:
             object_backend.add_property('solo_channels', '|'.join([x.channel.name for x in solo_channels]))
-        Channel.serialize(self, object_backend)
+        channel.serialize(self, object_backend)
 
     def unserialize_property(self, name, value):
         if name == "name":
@@ -655,17 +641,20 @@ class OutputChannel(Channel):
         if name == 'solo_channels':
             self._init_solo_channels = value.split('|')
             return True
-        return Channel.unserialize_property(self, name, value)
+        return channel.unserialize_property(self, name, value)
 
-class MainMixChannel(Channel):
+def output_channel_serialization_name():
+    return "output_channel"
+
+class main_mix(channel):
     _init_muted_channels = None
     _init_solo_channels = None
 
     def __init__(self, app):
-        Channel.__init__(self, app, "MAIN", True)
+        channel.__init__(self, app, "MAIN", True)
 
     def realize(self):
-        Channel.realize(self)
+        channel.realize(self)
         self.channel = self.mixer.main_mix_channel
         self.channel.midi_scale = self.slider_scale.scale
         self.channel.midi_change_callback = self.midi_change_callback
@@ -715,12 +704,11 @@ class MainMixChannel(Channel):
         self._init_solo_channels = None
 
     def unrealize(self):
-        Channel.unrealize(self)
+        channel.unrealize(self)
         self.channel = False
 
-    @classmethod
-    def serialization_name(cls):
-        return 'main_mix_channel'
+    def serialization_name(self):
+        return main_mix_serialization_name()
 
     def serialize(self, object_backend):
         muted_channels = []
@@ -734,7 +722,7 @@ class MainMixChannel(Channel):
             object_backend.add_property('muted_channels', '|'.join([x.channel.name for x in muted_channels]))
         if solo_channels:
             object_backend.add_property('solo_channels', '|'.join([x.channel.name for x in solo_channels]))
-        Channel.serialize(self, object_backend)
+        channel.serialize(self, object_backend)
 
     def unserialize_property(self, name, value):
         if name == 'muted_channels':
@@ -743,7 +731,10 @@ class MainMixChannel(Channel):
         if name == 'solo_channels':
             self._init_solo_channels = value.split('|')
             return True
-        return Channel.unserialize_property(self, name, value)
+        return channel.unserialize_property(self, name, value)
+
+def main_mix_serialization_name():
+    return "main_mix_channel"
 
 
 class ChannelPropertiesDialog(gtk.Dialog):
@@ -1009,4 +1000,3 @@ class ControlGroup(gtk.Alignment):
     def on_solo_toggled(self, button):
         self.output_channel.channel.set_solo(self.input_channel.channel, button.get_active())
         self.app.update_monitor(self)
-
diff --git a/configure b/configure
index 70aa995..10fccb0 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for jack_mixer 8.
+# Generated by GNU Autoconf 2.65 for jack_mixer 7.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -698,8 +698,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='jack_mixer'
 PACKAGE_TARNAME='jack_mixer'
-PACKAGE_VERSION='8'
-PACKAGE_STRING='jack_mixer 8'
+PACKAGE_VERSION='7'
+PACKAGE_STRING='jack_mixer 7'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1449,7 +1449,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures jack_mixer 8 to adapt to many kinds of systems.
+\`configure' configures jack_mixer 7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1519,7 +1519,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of jack_mixer 8:";;
+     short | recursive ) echo "Configuration of jack_mixer 7:";;
    esac
   cat <<\_ACEOF
 
@@ -1640,7 +1640,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-jack_mixer configure 8
+jack_mixer configure 7
 generated by GNU Autoconf 2.65
 
 Copyright (C) 2009 Free Software Foundation, Inc.
@@ -1918,7 +1918,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by jack_mixer $as_me 8, which was
+It was created by jack_mixer $as_me 7, which was
 generated by GNU Autoconf 2.65.  Invocation command line was
 
   $ $0 $@
@@ -2727,7 +2727,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='jack_mixer'
- VERSION='8'
+ VERSION='7'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11853,7 +11853,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by jack_mixer $as_me 8, which was
+This file was extended by jack_mixer $as_me 7, which was
 generated by GNU Autoconf 2.65.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11919,7 +11919,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-jack_mixer config.status 8
+jack_mixer config.status 7
 configured by $0, generated by GNU Autoconf 2.65,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 49585bd..a7277e3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
 #
 
 AC_PREREQ(2.61)
-AC_INIT(jack_mixer, 8)
+AC_INIT(jack_mixer, 7)
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE
diff --git a/gui.py b/gui.py
index ee82920..e4d6487 100644
--- a/gui.py
+++ b/gui.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -29,7 +31,7 @@ def lookup_scale(scales, scale_id):
             return scale
     return None
 
-class Factory(gobject.GObject):
+class factory(gobject.GObject):
     def __init__(self, topwindow, meter_scales, slider_scales):
         gobject.GObject.__init__(self)
         self.topwindow = topwindow
@@ -155,18 +157,14 @@ class Factory(gobject.GObject):
     def get_use_custom_widgets(self):
         return self.use_custom_widgets
 
-gobject.signal_new("default-meter-scale-changed", Factory,
-                gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION,
-                gobject.TYPE_NONE, [gobject.TYPE_PYOBJECT])
-gobject.signal_new("default-slider-scale-changed", Factory,
-                gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION,
-                gobject.TYPE_NONE, [gobject.TYPE_PYOBJECT])
-gobject.signal_new('vumeter-color-changed', Factory,
+gobject.signal_new("default-meter-scale-changed", factory, gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [gobject.TYPE_PYOBJECT])
+gobject.signal_new("default-slider-scale-changed", factory, gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [gobject.TYPE_PYOBJECT])
+gobject.signal_new('vumeter-color-changed', factory,
                 gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION,
                 gobject.TYPE_NONE, [str])
-gobject.signal_new('vumeter-color-scheme-changed', Factory,
+gobject.signal_new('vumeter-color-scheme-changed', factory,
                 gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION,
                 gobject.TYPE_NONE, [str])
-gobject.signal_new('use-custom-widgets-changed', Factory,
+gobject.signal_new('use-custom-widgets-changed', factory,
                 gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION,
                 gobject.TYPE_NONE, [bool])
diff --git a/jack_mixer.c b/jack_mixer.c
index 49c0b24..c9bb4c1 100644
--- a/jack_mixer.c
+++ b/jack_mixer.c
@@ -83,6 +83,8 @@ struct channel
   void *midi_change_callback_data;
 
   jack_mixer_scale_t midi_scale;
+
+  jack_mixer_output_channel_t output;
 };
 
 struct output_channel {
@@ -391,6 +393,7 @@ remove_channel(
     assert(channel_ptr->mixer_ptr->midi_cc_map[channel_ptr->midi_cc_balance_index] == channel_ptr);
     channel_ptr->mixer_ptr->midi_cc_map[channel_ptr->midi_cc_balance_index] = NULL;
   }
+  remove_output_channel(channel_ptr->output);
 
   free(channel_ptr);
 }
@@ -1072,6 +1075,7 @@ add_channel(
   struct channel * channel_ptr;
   char * port_name;
   size_t channel_name_size;
+  char * output_channel_name;
 
   channel_ptr = malloc(sizeof(struct channel));
   if (channel_ptr == NULL)
@@ -1148,6 +1152,12 @@ add_channel(
 
   calc_channel_volumes(channel_ptr);
 
+  // for monitoring etc.
+  output_channel_name = malloc(channel_name_size + 5);
+  sprintf(output_channel_name, "%s Out", channel_name);
+  channel_ptr->output = add_output_channel(mixer, output_channel_name, stereo, true);
+  free(output_channel_name);
+
   channel_ptr->mixer_ptr->input_channels_list = g_slist_prepend(
                   channel_ptr->mixer_ptr->input_channels_list, channel_ptr);
 
diff --git a/jack_mixer.py b/jack_mixer.py
index 2cf5964..26e005d 100755
--- a/jack_mixer.py
+++ b/jack_mixer.py
@@ -26,37 +26,35 @@ import gobject
 import sys
 import os
 
+import jack_mixer_c
+import scale
+
 try:
     import lash
 except:
     lash = None
-    print >> sys.stderr, "Cannot load LASH python bindings, you want them unless you enjoy manual jack plumbing each time you use this app"
 
-# temporary change Python modules lookup path to look into installation
-# directory ($prefix/share/jack_mixer/)
 old_path = sys.path
-sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), '..', 'share', 'jack_mixer'))
-
-import jack_mixer_c
-import scale
+sys.path.insert(0, os.path.dirname(sys.argv[0]) + os.sep + ".." + os.sep + "share"+ os.sep + "jack_mixer")
 from channel import *
-
 import gui
 from preferences import PreferencesDialog
 
-from serialization_xml import XmlSerialization
-from serialization import SerializedObject, Serializator
-
-# restore Python modules lookup path
 sys.path = old_path
 
-class JackMixer(SerializedObject):
+from serialization_xml import xml_serialization
+from serialization import serialized_object, serializator
+
+if lash is None:
+    print >> sys.stderr, "Cannot load LASH python bindings, you want them unless you enjoy manual jack plumbing each time you use this app"
+
+class jack_mixer(serialized_object):
 
     # scales suitable as meter scales
-    meter_scales = [scale.IEC268(), scale.Linear70dB(), scale.IEC268Minimalistic()]
+    meter_scales = [scale.iec_268(), scale.linear_70dB(), scale.iec_268_minimalistic()]
 
     # scales suitable as volume slider scales
-    slider_scales = [scale.Linear30dB(), scale.Linear70dB()]
+    slider_scales = [scale.linear_30dB(), scale.linear_70dB()]
 
     # name of settngs file that is currently open
     current_filename = None
@@ -80,7 +78,7 @@ class JackMixer(SerializedObject):
         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
         self.window.set_title(name)
 
-        self.gui_factory = gui.Factory(self.window, self.meter_scales, self.slider_scales)
+        self.gui_factory = gui.factory(self.window, self.meter_scales, self.slider_scales)
 
         self.vbox_top = gtk.VBox()
         self.window.add(self.vbox_top)
@@ -95,7 +93,7 @@ class JackMixer(SerializedObject):
         help_menu_item = gtk.MenuItem('_Help')
         self.menubar.append(help_menu_item)
 
-        self.window.set_default_size(120, 300)
+        self.window.set_default_size(120,300)
 
         mixer_menu = gtk.Menu()
         mixer_menu_item.set_submenu(mixer_menu)
@@ -108,16 +106,17 @@ class JackMixer(SerializedObject):
         mixer_menu.append(add_output_channel)
         add_output_channel.connect("activate", self.on_add_output_channel)
 
-        mixer_menu.append(gtk.SeparatorMenuItem())
-        open = gtk.ImageMenuItem(gtk.STOCK_OPEN)
-        mixer_menu.append(open)
-        open.connect('activate', self.on_open_cb)
-        save = gtk.ImageMenuItem(gtk.STOCK_SAVE)
-        mixer_menu.append(save)
-        save.connect('activate', self.on_save_cb)
-        save_as = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS)
-        mixer_menu.append(save_as)
-        save_as.connect('activate', self.on_save_as_cb)
+        if lash_client is None and xml_serialization is not None:
+            mixer_menu.append(gtk.SeparatorMenuItem())
+            open = gtk.ImageMenuItem(gtk.STOCK_OPEN)
+            mixer_menu.append(open)
+            open.connect('activate', self.on_open_cb)
+            save = gtk.ImageMenuItem(gtk.STOCK_SAVE)
+            mixer_menu.append(save)
+            save.connect('activate', self.on_save_cb)
+            save_as = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS)
+            mixer_menu.append(save_as)
+            save_as.connect('activate', self.on_save_as_cb)
 
         mixer_menu.append(gtk.SeparatorMenuItem())
 
@@ -128,15 +127,10 @@ class JackMixer(SerializedObject):
         edit_menu = gtk.Menu()
         edit_menu_item.set_submenu(edit_menu)
 
-        self.channel_remove_input_menu_item = gtk.MenuItem('Remove Input Channel')
-        edit_menu.append(self.channel_remove_input_menu_item)
-        self.channel_remove_input_menu = gtk.Menu()
-        self.channel_remove_input_menu_item.set_submenu(self.channel_remove_input_menu)
-
-        self.channel_remove_output_menu_item = gtk.MenuItem('Remove Output Channel')
-        edit_menu.append(self.channel_remove_output_menu_item)
-        self.channel_remove_output_menu = gtk.Menu()
-        self.channel_remove_output_menu_item.set_submenu(self.channel_remove_output_menu)
+        self.channel_remove_menu_item = gtk.ImageMenuItem(gtk.STOCK_REMOVE)
+        edit_menu.append(self.channel_remove_menu_item)
+        self.channel_remove_menu = gtk.Menu()
+        self.channel_remove_menu_item.set_submenu(self.channel_remove_menu)
 
         channel_remove_all_menu_item = gtk.ImageMenuItem(gtk.STOCK_CLEAR)
         edit_menu.append(channel_remove_all_menu_item)
@@ -172,7 +166,7 @@ class JackMixer(SerializedObject):
         self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
         self.scrolled_window.add_with_viewport(self.hbox_inputs)
 
-        self.main_mix = MainMixChannel(self)
+        self.main_mix = main_mix(self)
         self.hbox_outputs = gtk.HBox()
         self.hbox_outputs.set_spacing(0)
         self.hbox_outputs.set_border_width(0)
@@ -209,13 +203,8 @@ class JackMixer(SerializedObject):
                 f = file(filename, 'r')
                 self.load_from_xml(f)
             except:
-                err = gtk.MessageDialog(self.window,
-                            gtk.DIALOG_MODAL,
-                            gtk.MESSAGE_ERROR,
-                            gtk.BUTTONS_OK,
-                            "Failed loading settings.")
-                err.run()
-                err.destroy()
+                # TODO: display error in a dialog box
+                print >> sys.stderr, 'Failed to read', filename
             else:
                 self.current_filename = filename
             finally:
@@ -274,9 +263,9 @@ class JackMixer(SerializedObject):
             channel = self.add_output_channel(**result)
             self.window.show_all()
 
-    def on_remove_input_channel(self, widget, channel):
+    def on_remove_channel(self, widget, channel):
         print 'Removing channel "%s"' % channel.channel_name
-        self.channel_remove_input_menu.remove(widget)
+        self.channel_remove_menu.remove(widget)
         if self.monitored_channel is channel:
             channel.monitor_button.set_active(False)
         for i in range(len(self.channels)):
@@ -286,41 +275,20 @@ class JackMixer(SerializedObject):
                 self.hbox_inputs.remove(channel.parent)
                 break
         if len(self.channels) == 0:
-            self.channel_remove_input_menu_item.set_sensitive(False)
-
-    def on_remove_output_channel(self, widget, channel):
-        print 'Removing channel "%s"' % channel.channel_name
-        self.channel_remove_output_menu.remove(widget)
-        if self.monitored_channel is channel:
-            channel.monitor_button.set_active(False)
-        for i in range(len(self.channels)):
-            if self.output_channels[i] is channel:
-                channel.unrealize()
-                del self.output_channels[i]
-                self.hbox_outputs.remove(channel.parent)
-                break
-        if len(self.output_channels) == 0:
-            self.channel_remove_output_menu_item.set_sensitive(False)
+            self.channel_remove_menu_item.set_sensitive(False)
 
     def on_channels_clear(self, widget):
-        for channel in self.output_channels:
-            channel.unrealize()
-            self.hbox_outputs.remove(channel.parent)
         for channel in self.channels:
             channel.unrealize()
             self.hbox_inputs.remove(channel.parent)
         self.channels = []
-        self.output_channels = []
-        self.channel_remove_input_menu = gtk.Menu()
-        self.channel_remove_input_menu_item.set_submenu(self.channel_remove_input_menu)
-        self.channel_remove_input_menu_item.set_sensitive(False)
-        self.channel_remove_output_menu = gtk.Menu()
-        self.channel_remove_output_menu_item.set_submenu(self.channel_remove_output_menu)
-        self.channel_remove_output_menu_item.set_sensitive(False)
+        self.channel_remove_menu = gtk.Menu()
+        self.channel_remove_menu_item.set_submenu(self.channel_remove_menu)
+        self.channel_remove_menu_item.set_sensitive(False)
 
     def add_channel(self, name, stereo, volume_cc, balance_cc):
         try:
-            channel = InputChannel(self, name, stereo)
+            channel = input_channel(self, name, stereo)
             self.add_channel_precreated(channel)
         except Exception:
             err = gtk.MessageDialog(self.window,
@@ -337,7 +305,6 @@ class JackMixer(SerializedObject):
             channel.channel.balance_midi_cc = int(balance_cc)
         if not (volume_cc or balance_cc):
             channel.channel.autoset_midi_cc()
-
         return channel
 
     def add_channel_precreated(self, channel):
@@ -346,20 +313,14 @@ class JackMixer(SerializedObject):
         self.hbox_inputs.pack_start(frame, False)
         channel.realize()
         channel_remove_menu_item = gtk.MenuItem(channel.channel_name)
-        self.channel_remove_input_menu.append(channel_remove_menu_item)
-        channel_remove_menu_item.connect("activate", self.on_remove_input_channel, channel)
-        self.channel_remove_input_menu_item.set_sensitive(True)
+        self.channel_remove_menu.append(channel_remove_menu_item)
+        channel_remove_menu_item.connect("activate", self.on_remove_channel, channel)
+        self.channel_remove_menu_item.set_sensitive(True)
         self.channels.append(channel)
 
         for outputchannel in self.output_channels:
             channel.add_control_group(outputchannel)
 
-        # create post fader output channel matching the input channel
-        channel.post_fader_output_channel = self.mixer.add_output_channel(
-                        channel.channel.name + ' Out', channel.channel.is_stereo, True)
-        channel.post_fader_output_channel.volume = 0
-        channel.post_fader_output_channel.set_solo(channel.channel, True)
-
     def read_meters(self):
         for channel in self.channels:
             channel.read_meter()
@@ -370,10 +331,11 @@ class JackMixer(SerializedObject):
 
     def add_output_channel(self, name, stereo, volume_cc, balance_cc, display_solo_buttons):
         try:
-            channel = OutputChannel(self, name, stereo)
+            channel = output_channel(self, name, stereo)
             channel.display_solo_buttons = display_solo_buttons
             self.add_output_channel_precreated(channel)
         except Exception:
+            raise
             err = gtk.MessageDialog(self.window,
                             gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                             gtk.MESSAGE_ERROR,
@@ -393,10 +355,11 @@ class JackMixer(SerializedObject):
         frame.add(channel)
         self.hbox_outputs.pack_start(frame, False)
         channel.realize()
-        channel_remove_menu_item = gtk.MenuItem(channel.channel_name)
-        self.channel_remove_output_menu.append(channel_remove_menu_item)
-        channel_remove_menu_item.connect("activate", self.on_remove_output_channel, channel)
-        self.channel_remove_output_menu_item.set_sensitive(True)
+        # XXX: handle deletion of output channels
+        #channel_remove_menu_item = gtk.MenuItem(channel.channel_name)
+        #self.channel_remove_menu.append(channel_remove_menu_item)
+        #channel_remove_menu_item.connect("activate", self.on_remove_channel, channel, channel_remove_menu_item)
+        #self.channel_remove_menu_item.set_sensitive(True)
         self.output_channels.append(channel)
 
     _monitored_channel = None
@@ -408,7 +371,7 @@ class JackMixer(SerializedObject):
             if channel.channel.name == self._monitored_channel.channel.name:
                 return
         self._monitored_channel = channel
-        if type(channel) is InputChannel:
+        if type(channel) is input_channel:
             # reset all solo/mute settings
             for in_channel in self.channels:
                 self.monitor_channel.set_solo(in_channel.channel, False)
@@ -425,14 +388,14 @@ class JackMixer(SerializedObject):
             return
         self.monitor_channel.volume = channel.channel.volume
         self.monitor_channel.balance = channel.channel.balance
-        if type(self.monitored_channel) is OutputChannel:
+        if type(self.monitored_channel) is output_channel:
             # sync solo/muted channels
             for input_channel in self.channels:
                 self.monitor_channel.set_solo(input_channel.channel,
                                 channel.channel.is_solo(input_channel.channel))
                 self.monitor_channel.set_muted(input_channel.channel,
                                 channel.channel.is_muted(input_channel.channel))
-        elif type(self.monitored_channel) is MainMixChannel:
+        elif type(self.monitored_channel) is main_mix:
             # sync solo/muted channels
             for input_channel in self.channels:
                 self.monitor_channel.set_solo(input_channel.channel,
@@ -496,7 +459,7 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
                 print "jack_mixer: LASH ordered to restore data from directory %s" % directory
                 filename = directory + os.sep + "jack_mixer.xml"
                 f = file(filename, "r")
-                self.load_from_xml(f, silence_errors=True)
+                self.load_from_xml(f)
                 f.close()
                 lash.lash_send_event(self.lash_client, event)
             else:
@@ -509,29 +472,24 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
 
     def save_to_xml(self, file):
         #print "Saving to XML..."
-        b = XmlSerialization()
-        s = Serializator()
+        b = xml_serialization()
+        s = serializator()
         s.serialize(self, b)
         b.save(file)
 
-    def load_from_xml(self, file, silence_errors=False):
+    def load_from_xml(self, file):
         #print "Loading from XML..."
         self.on_channels_clear(None)
         self.unserialized_channels = []
-        b = XmlSerialization()
-        try:
-            b.load(file)
-        except:
-            if silence_errors:
-                return
-            raise
-        s = Serializator()
+        b = xml_serialization()
+        b.load(file)
+        s = serializator()
         s.unserialize(self, b)
         for channel in self.unserialized_channels:
-            if isinstance(channel, InputChannel):
+            if isinstance(channel, input_channel):
                 self.add_channel_precreated(channel)
         for channel in self.unserialized_channels:
-            if isinstance(channel, OutputChannel):
+            if isinstance(channel, output_channel):
                 self.add_output_channel_precreated(channel)
         del self.unserialized_channels
         self.window.show_all()
@@ -547,16 +505,16 @@ Franklin Street, Fifth Floor, Boston, MA 02110-130159 USA''')
             return True
 
     def unserialize_child(self, name):
-        if name == MainMixChannel.serialization_name():
+        if name == main_mix_serialization_name():
             return self.main_mix
 
-        if name == InputChannel.serialization_name():
-            channel = InputChannel(self, "", True)
+        if name == input_channel_serialization_name():
+            channel = input_channel(self, "", True)
             self.unserialized_channels.append(channel)
             return channel
 
-        if name == OutputChannel.serialization_name():
-            channel = OutputChannel(self, "", True)
+        if name == output_channel_serialization_name():
+            channel = output_channel(self, "", True)
             self.unserialized_channels.append(channel)
             return channel
 
@@ -588,21 +546,14 @@ def help():
     print "Usage: %s [mixer_name]" % sys.argv[0]
 
 def main():
-    # Connect to LASH if Python bindings are available, and the user did not
-    # pass --no-lash
-    if lash and not '--no-lash' in sys.argv:
+    if lash:                        # If LASH python bindings are available
         # sys.argv is modified by this call
         lash_client = lash.init(sys.argv, "jack_mixer", lash.LASH_Config_File)
     else:
         lash_client = None
 
     parser = OptionParser()
-    parser.add_option('-c', '--config', dest='config',
-                      help='use a non default configuration file')
-    # --no-lash here is not acted upon, it is specified for completeness when
-    # --help is passed.
-    parser.add_option('--no-lash', dest='nolash', action='store_true',
-                      help='do not connect to LASH')
+    parser.add_option('-c', '--config', dest='config')
     options, args = parser.parse_args()
 
     # Yeah , this sounds stupid, we connected earlier, but we dont want to show this if we got --help option
@@ -620,7 +571,7 @@ def main():
 
     gtk.gdk.threads_init()
     try:
-        mixer = JackMixer(name, lash_client)
+        mixer = jack_mixer(name, lash_client)
     except Exception, e:
         err = gtk.MessageDialog(None,
                             gtk.DIALOG_MODAL,
@@ -634,17 +585,8 @@ def main():
     if options.config:
         f = file(options.config)
         mixer.current_filename = options.config
-        try:
-            mixer.load_from_xml(f)
-        except:
-            err = gtk.MessageDialog(mixer.window,
-                            gtk.DIALOG_MODAL,
-                            gtk.MESSAGE_ERROR,
-                            gtk.BUTTONS_OK,
-                            "Failed loading settings.")
-            err.run()
-            err.destroy()
-        mixer.window.set_default_size(60*(1+len(mixer.channels)+len(mixer.output_channels)), 300)
+        mixer.load_from_xml(f)
+        mixer.window.set_default_size(60*(1+len(mixer.channels)+len(mixer.output_channels)),300)
         f.close()
 
     mixer.main()
diff --git a/jack_mixer_c.c b/jack_mixer_c.c
index 049a2b2..a1b400e 100644
--- a/jack_mixer_c.c
+++ b/jack_mixer_c.c
@@ -211,10 +211,6 @@ Channel_get_volume(ChannelObject *self, void *closure)
 static int
 Channel_set_volume(ChannelObject *self, PyObject *value, void *closure)
 {
-	if (self->channel == NULL) {
-		PyErr_SetString(PyExc_RuntimeError, "unitialized channel");
-		return -1;
-	}
 	channel_volume_write(self->channel, PyFloat_AsDouble(value));
 	return 0;
 }
diff --git a/meter.py b/meter.py
index 59e1f75..49d0445 100644
--- a/meter.py
+++ b/meter.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -18,7 +20,7 @@
 import gtk
 import cairo
 
-class MeterWidget(gtk.DrawingArea):
+class meter(gtk.DrawingArea):
     def __init__(self, scale):
         gtk.DrawingArea.__init__(self)
 
@@ -112,9 +114,9 @@ class MeterWidget(gtk.DrawingArea):
         self.cache_surface = None
         self.invalidate_all()
 
-class MonoMeterWidget(MeterWidget):
+class mono(meter):
     def __init__(self, scale):
-        MeterWidget.__init__(self, scale)
+        meter.__init__(self, scale)
         self.value = 0.0
         self.raw_value = 0.0
 
@@ -135,9 +137,9 @@ class MonoMeterWidget(MeterWidget):
         if (abs(old_value-self.value) * self.height) > 1:
             self.invalidate_all()
 
-class StereoMeterWidget(MeterWidget):
+class stereo(meter):
     def __init__(self, scale):
-        MeterWidget.__init__(self, scale)
+        meter.__init__(self, scale)
         self.left = 0.0
         self.right = 0.0
 
diff --git a/scale.py b/scale.py
index f4139d6..467a054 100644
--- a/scale.py
+++ b/scale.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -18,14 +20,14 @@
 import math
 import jack_mixer_c
 
-class Mark:
+class mark:
     '''Encapsulates scale linear function edge and coefficients for scale = a * dB + b formula'''
     def __init__(self, db, scale):
         self.db = db
         self.scale = scale
         self.text = "%.0f" % math.fabs(db)
 
-class Base:
+class base:
     '''Scale abstraction, various scale implementation derive from this class'''
     def __init__(self, scale_id, description):
         self.marks = []
@@ -36,7 +38,7 @@ class Base:
     def add_threshold(self, db, scale, is_mark):
         self.scale.add_threshold(db, scale)
         if is_mark:
-            self.marks.append(Mark(db, scale))
+            self.marks.append(mark(db, scale))
 
     def calculate_coefficients(self):
         self.scale.calculate_coefficients()
@@ -51,7 +53,7 @@ class Base:
         return self.scale.scale_to_db(scale)
 
     def add_mark(self, db):
-        self.marks.append(Mark(db, -1.0))
+        self.marks.append(mark(db, -1.0))
 
     def get_marks(self):
         return self.marks
@@ -64,11 +66,10 @@ class Base:
 # IEC 60268-18 Peak programme level meters - Digital audio peak level meter
 # Adapted from meterpridge, may be wrong, I'm not buying standards, event if they cost $45
 # If someone has the standart, please eighter share it with me or fix the code.
-class IEC268(Base):
+class iec_268(base):
     '''IEC 60268-18 Peak programme level meters - Digital audio peak level meter'''
     def __init__(self):
-        Base.__init__(self, "iec_268",
-                      "IEC 60268-18 Peak programme level meters - Digital audio peak level meter")
+        base.__init__(self, "iec_268", "IEC 60268-18 Peak programme level meters - Digital audio peak level meter")
         self.add_threshold(-70.0, 0.0, False)
         self.add_threshold(-60.0, 0.05, True)
         self.add_threshold(-50.0, 0.075, True)
@@ -84,12 +85,10 @@ class IEC268(Base):
         self.calculate_coefficients()
         self.scale_marks()
 
-class IEC268Minimalistic(Base):
-    '''IEC 60268-18 Peak programme level meters - Digital audio peak level meter,
-       fewer marks'''
+class iec_268_minimalistic(base):
+    '''IEC 60268-18 Peak programme level meters - Digital audio peak level meter, fewer marks'''
     def __init__(self):
-        Base.__init__(self, 'iec_268_minimalistic',
-                      'IEC 60268-18 Peak programme level meters - Digital audio peak level meter, fewer marks')
+        base.__init__(self, "iec_268_minimalistic", "IEC 60268-18 Peak programme level meters - Digital audio peak level meter, fewer marks")
         self.add_threshold(-70.0, 0.0, False)
         self.add_threshold(-60.0, 0.05, True)
         self.add_threshold(-50.0, 0.075, False)
@@ -101,10 +100,10 @@ class IEC268Minimalistic(Base):
         self.calculate_coefficients()
         self.scale_marks()
 
-class Linear70dB(Base):
+class linear_70dB(base):
     '''Linear scale with range from -70 to 0 dBFS'''
     def __init__(self):
-        Base.__init__(self, "linear_70dB", "Linear scale with range from -70 to 0 dBFS")
+        base.__init__(self, "linear_70dB", "Linear scale with range from -70 to 0 dBFS")
         self.add_threshold(-70.0, 0.0, False)
         self.add_mark(-60.0)
         self.add_mark(-50.0)
@@ -120,10 +119,10 @@ class Linear70dB(Base):
         self.calculate_coefficients()
         self.scale_marks()
 
-class Linear30dB(Base):
+class linear_30dB(base):
     '''Linear scale with range from -30 to +30 dBFS'''
     def __init__(self):
-        Base.__init__(self, "linear_30dB", "Linear scale with range from -30 to +30 dBFS")
+        base.__init__(self, "linear_30dB", "Linear scale with range from -30 to +30 dBFS")
         self.add_threshold(-30.0, 0.0, False)
         self.add_threshold(+30.0, 1.0, True)
         self.calculate_coefficients()
diff --git a/serialization.py b/serialization.py
index 77656f4..13970a0 100644
--- a/serialization.py
+++ b/serialization.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -15,21 +17,17 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 
-class SerializationBackend:
+class serialization_backend:
     '''Base class for serialization backends'''
     def get_root_serialization_object(self, name):
-        '''Returns serialization object where properties of root object
-           will be serialized to'''
-        # this method should never be called for the base class
-        raise NotImplementedError
+        '''Returns serialization object where properties of root object will be serialized to'''
+        return None                     # this method should never be called for the base class
 
     def get_child_serialization_object(self, name, backend_object):
-        # this method should never be called for the base class
-        raise NotImplementedError
+        return None                     # this method should never be called for the base class
 
-class SerializationObjectBackend:
-    '''Base class for serialization backend objects where real object
-       properties will be serialized to or unserialized from.'''
+class serialization_object_backend:
+    '''Base class for serialization backend objects where real object properties will be serialized to or unserialized from.'''
     def add_property(self, name, value):
         '''Serialize particular property'''
         pass
@@ -43,7 +41,7 @@ class SerializationObjectBackend:
     def serialization_name(self):
         return None
 
-class SerializedObject:
+class serialized_object:
     '''Base class for object supporting serialization'''
     def serialization_name(self):
         return None
@@ -62,7 +60,7 @@ class SerializedObject:
     def unserialize_child(self, name):
         return None
 
-class Serializator:
+class serializator:
     def __init__(self):
         pass
 
@@ -100,6 +98,4 @@ class Serializator:
         childs = object.serialization_get_childs()
         for child in childs:
             #print "serializing child " + repr(child)
-            self.serialize_one(backend, child,
-                               backend.get_child_serialization_object(
-                                       child.serialization_name(), backend_object))
+            self.serialize_one(backend, child, backend.get_child_serialization_object(child.serialization_name(), backend_object))
diff --git a/serialization_xml.py b/serialization_xml.py
index 3e6d0ee..4d7c4bd 100644
--- a/serialization_xml.py
+++ b/serialization_xml.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -19,20 +21,20 @@ from serialization import *
 import xml.dom
 import xml.dom.minidom
 
-class XmlSerialization(SerializationBackend):
+class xml_serialization(serialization_backend):
     def get_root_serialization_object(self, name):
         self.doc = xml.dom.getDOMImplementation().createDocument(xml.dom.EMPTY_NAMESPACE, name, None)
-        return XmlSerializationObject(self.doc, self.doc.documentElement)
+        return xml_serialization_object(self.doc, self.doc.documentElement)
 
     def get_root_unserialization_object(self, name):
         if name != self.doc.documentElement.nodeName:
             return None
-        return XmlSerializationObject(self.doc, self.doc.documentElement)
+        return xml_serialization_object(self.doc, self.doc.documentElement)
 
     def get_child_serialization_object(self, name, backend_object):
         child = self.doc.createElement(name)
         backend_object.element.appendChild(child)
-        return XmlSerializationObject(self.doc, child)
+        return xml_serialization_object(self.doc, child)
 
     def save(self, file):
         file.write(self.doc.toprettyxml())
@@ -40,7 +42,7 @@ class XmlSerialization(SerializationBackend):
     def load(self, file):
         self.doc = xml.dom.minidom.parse(file)
 
-class XmlSerializationObject:
+class xml_serialization_object:
     def __init__(self, doc, element):
         self.doc = doc
         self.element = element
@@ -62,7 +64,7 @@ class XmlSerializationObject:
         childs = []
         for child in child_elements:
             if child.nodeType == child.ELEMENT_NODE:
-                childs.append(XmlSerializationObject(self.doc, child))
+                childs.append(xml_serialization_object(self.doc, child))
         return childs
 
     def get_properties(self):
diff --git a/slider.py b/slider.py
index d6f38b8..6d86cbe 100644
--- a/slider.py
+++ b/slider.py
@@ -1,7 +1,9 @@
+#!/usr/bin/env python
+#
 # This file is part of jack_mixer
 #
 # Copyright (C) 2006 Nedko Arnaudov <nedko at arnaudov.name>
-#
+#  
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; version 2 of the License
@@ -18,7 +20,7 @@
 import gtk
 import gobject
 
-class AdjustmentdBFS(gtk.Adjustment):
+class adjustment_dBFS(gtk.Adjustment):
     def __init__(self, scale, default_db):
         self.default_value = scale.db_to_scale(default_db)
         self.db = default_db
@@ -57,8 +59,7 @@ class AdjustmentdBFS(gtk.Adjustment):
         self.set_value(self.scale.db_to_scale(self.db))
         self.disable_value_notify = False
 
-gobject.signal_new("volume-changed", AdjustmentdBFS,
-                   gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [])
+gobject.signal_new("volume-changed", adjustment_dBFS, gobject.SIGNAL_RUN_FIRST | gobject.SIGNAL_ACTION, gobject.TYPE_NONE, [])
 
 
 class GtkSlider(gtk.VScale):

-- 
jack-mixer packaging



More information about the pkg-multimedia-commits mailing list