gtk.VBox.__init__(self)
self.mixer = mixer
self.gui_factory = gui_factory
- self.channel_name = name
+ self._channel_name = name
self.stereo = stereo
self.meter_scale = gui_factory.get_default_meter_scale()
self.slider_scale = gui_factory.get_default_slider_scale()
self.slider_adjustment = slider.adjustment_dBFS(self.slider_scale, 0.0)
self.balance_adjustment = gtk.Adjustment(0.0, -1.0, 1.0, 0.02)
+ def get_channel_name(self):
+ return self._channel_name
+
+ label_name = None
+ channel = None
+ def set_channel_name(self, name):
+ self._channel_name = name
+ if self.label_name:
+ self.label_name.set_text(name)
+ if self.channel:
+ self.channel.name = name
+ channel_name = property(get_channel_name, set_channel_name)
+
def realize(self):
#print "Realizing channel \"%s\"" % self.channel_name
self.channel.remove()
self.channel = False
- def on_rename_channel(self):
- result = self.gui_factory.run_dialog_rename_channel(self.channel_name)
- if result != None:
- #print "renaming to \"%s\"" % result
- self.channel_name = result
- self.label_name.set_text(self.channel_name)
- self.channel.name = self.channel_name
+ channel_properties_dialog = None
+ def on_channel_properties(self):
+ if not self.channel_properties_dialog:
+ self.channel_properties_dialog = ChannelPropertiesDialog(self)
+ self.channel_properties_dialog.show()
+ self.channel_properties_dialog.present()
def on_label_mouse(self, widget, event):
if event.type == gtk.gdk._2BUTTON_PRESS:
if event.button == 1:
- self.on_rename_channel()
+ self.on_channel_properties()
def on_mute_toggled(self, button):
self.channel.mute = self.mute.get_active()
def main_mix_serialization_name():
return "main_mix_channel"
+
+
+class ChannelPropertiesDialog(gtk.Dialog):
+ def __init__(self, parent):
+ self.channel = parent
+ gtk.Dialog.__init__(self,
+ 'Channel "%s" Properties' % self.channel.channel_name,
+ self.channel.gui_factory.topwindow)
+ self.create_ui()
+ self.connect('response', self.on_response_cb)
+ self.connect('delete-event', self.on_response_cb)
+
+ def create_frame(self, label, child):
+ frame = gtk.Frame('')
+ frame.set_border_width(3)
+ frame.set_shadow_type(gtk.SHADOW_NONE)
+ frame.get_label_widget().set_markup('<b>%s</b>' % label)
+
+ alignment = gtk.Alignment()
+ alignment.set_padding(0, 0, 12, 0)
+ frame.add(alignment)
+ alignment.add(child)
+
+ return frame
+
+
+ def create_ui(self):
+ vbox = gtk.VBox()
+ self.vbox.add(vbox)
+
+ table = gtk.Table(2, 3, False)
+ vbox.pack_start(self.create_frame('Properties', table))
+ table.set_row_spacings(5)
+ table.set_col_spacings(5)
+
+ table.attach(gtk.Label('Name'), 0, 1, 0, 1)
+ self.entry_name = gtk.Entry()
+ self.entry_name.set_text(self.channel.channel_name)
+ table.attach(self.entry_name, 1, 2, 0, 1)
+
+
+ table = gtk.Table(3, 2, False)
+ vbox.pack_start(self.create_frame('MIDI Channels', table))
+ table.set_row_spacings(5)
+ table.set_col_spacings(5)
+
+
+ table.attach(gtk.Label('MIDI Channel for Balance'), 0, 1, 0, 1)
+ table.attach(gtk.Label('xxx'), 1, 2, 0, 1)
+
+ table.attach(gtk.Label('MIDI Channel for Volume'), 0, 1, 1, 2)
+ table.attach(gtk.Label('xxx'), 1, 2, 1, 2)
+
+ self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
+ self.add_button(gtk.STOCK_APPLY, gtk.RESPONSE_APPLY)
+
+ self.vbox.show_all()
+
+ def on_response_cb(self, dlg, response_id, *args):
+ self.channel.preferences_dialog = None
+ self.destroy()
+ if response_id == gtk.RESPONSE_APPLY:
+ name = self.entry_name.get_text()
+ self.channel.channel_name = name
</child>
</widget>
-<widget class="GtkDialog" id="dialog_rename_channel">
- <property name="title" translatable="yes">Rename channel</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="modal">True</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="role">rename_channel</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="has_separator">True</property>
-
- <child internal-child="vbox">
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="hbuttonbox1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
-
- <child>
- <widget class="GtkButton" id="button1">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="response_id">-6</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="button2">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="response_id">-5</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox3">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">5</property>
-
- <child>
- <widget class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Channel name</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkEntry" id="channel_name">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
</glade-interface>