]> git.0d.be Git - jack_mixer.git/commitdiff
Replace "rename channel" dialog by a "channel properties" dialog
authorFrédéric Péters <fpeters@0d.be>
Wed, 21 Oct 2009 18:40:22 +0000 (20:40 +0200)
committerFrédéric Péters <fpeters@0d.be>
Wed, 21 Oct 2009 18:40:22 +0000 (20:40 +0200)
channel.py
jack_mixer.glade

index 90e8ef0a3d8d587e3efa50ea336c57bacef2a578..25b5cab25ce7fa7e1ec8d5cc36af1b0eb5747958 100644 (file)
@@ -41,13 +41,26 @@ class channel(gtk.VBox, serialized_object):
         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
 
@@ -312,18 +325,17 @@ class input_channel(channel):
         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()
@@ -409,3 +421,67 @@ class main_mix(channel):
 
 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
index de19c1f89013095be537f3303ac6d861767fe65f..266e2752e731f3a4ec2547b7de582a893ebf044e 100644 (file)
   </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>