]> git.0d.be Git - jack_mixer.git/commitdiff
Add 'Edit .. channel' submenu's
authorArnout Engelen <arnouten@localhost.(none)>
Mon, 21 Dec 2009 23:39:01 +0000 (00:39 +0100)
committerArnout Engelen <arnouten@bird.(none)>
Tue, 29 Dec 2009 17:36:23 +0000 (18:36 +0100)
Fixes bug #14980: renaming channels requires mouse

Also addes menu accellerator keys and makes sure the labels in the submenus
are changed to reflect any changes in channel names.

channel.py
jack_mixer.py

index d4d78cf81867cf2fe08c1b8f671d77b5b3d0d47f..ba6e7ef28391e4095a99c918f327dad8e126d4f3 100644 (file)
@@ -54,6 +54,7 @@ class Channel(gtk.VBox, SerializedObject):
     label_name = None
     channel = None
     def set_channel_name(self, name):
+        self.app.on_channel_rename(self._channel_name, name);
         self._channel_name = name
         if self.label_name:
             self.label_name.set_text(name)
index 06db08791302fa92bcb9c60b576737622aabe013..f626bf151dab2c6e39aac3b8e2d74986367d5a28 100755 (executable)
@@ -128,12 +128,22 @@ 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')
+        self.channel_edit_input_menu_item = gtk.MenuItem('_Edit Input Channel')
+        edit_menu.append(self.channel_edit_input_menu_item)
+        self.channel_edit_input_menu = gtk.Menu()
+        self.channel_edit_input_menu_item.set_submenu(self.channel_edit_input_menu)
+
+        self.channel_edit_output_menu_item = gtk.MenuItem('Edit _Output Channel')
+        edit_menu.append(self.channel_edit_output_menu_item)
+        self.channel_edit_output_menu = gtk.Menu()
+        self.channel_edit_output_menu_item.set_submenu(self.channel_edit_output_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')
+        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)
@@ -274,9 +284,20 @@ class JackMixer(SerializedObject):
             channel = self.add_output_channel(**result)
             self.window.show_all()
 
+    def on_edit_input_channel(self, widget, channel):
+        print 'Editing channel "%s"' % channel.channel_name
+        channel.on_channel_properties()
+
+    def remove_channel_edit_input_menuitem_by_label(self, widget, label):
+        if (widget.get_label() == label):
+            self.channel_edit_input_menu.remove(widget)
+
     def on_remove_input_channel(self, widget, channel):
         print 'Removing channel "%s"' % channel.channel_name
         self.channel_remove_input_menu.remove(widget)
+        self.channel_edit_input_menu.foreach(
+            self.remove_channel_edit_input_menuitem_by_label, 
+            channel.channel_name);
         if self.monitored_channel is channel:
             channel.monitor_button.set_active(False)
         for i in range(len(self.channels)):
@@ -288,9 +309,20 @@ class JackMixer(SerializedObject):
         if len(self.channels) == 0:
             self.channel_remove_input_menu_item.set_sensitive(False)
 
+    def on_edit_output_channel(self, widget, channel):
+        print 'Editing channel "%s"' % channel.channel_name
+        channel.on_channel_properties()
+
+    def remove_channel_edit_output_menuitem_by_label(self, widget, label):
+        if (widget.get_label() == label):
+            self.channel_edit_output_menu.remove(widget)
+
     def on_remove_output_channel(self, widget, channel):
         print 'Removing channel "%s"' % channel.channel_name
         self.channel_remove_output_menu.remove(widget)
+        self.channel_edit_output_menu.foreach(
+            self.remove_channel_edit_output_menuitem_by_label, 
+            channel.channel_name);
         if self.monitored_channel is channel:
             channel.monitor_button.set_active(False)
         for i in range(len(self.channels)):
@@ -302,6 +334,23 @@ class JackMixer(SerializedObject):
         if len(self.output_channels) == 0:
             self.channel_remove_output_menu_item.set_sensitive(False)
 
+    def rename_channels(self, container, parameters):
+        if (container.get_label() == parameters['oldname']):
+            container.set_label(parameters['newname']) 
+
+    def on_channel_rename(self, oldname, newname):
+        rename_parameters = { 'oldname' : oldname, 'newname' : newname }
+        self.channel_edit_input_menu.foreach(self.rename_channels, 
+            rename_parameters)
+        self.channel_edit_output_menu.foreach(self.rename_channels, 
+            rename_parameters)
+        self.channel_remove_input_menu.foreach(self.rename_channels, 
+            rename_parameters)
+        self.channel_remove_output_menu.foreach(self.rename_channels, 
+            rename_parameters)
+        print "Renaming channel from %s to %s\n" % (oldname, newname)
+
+
     def on_channels_clear(self, widget):
         for channel in self.output_channels:
             channel.unrealize()
@@ -311,9 +360,15 @@ class JackMixer(SerializedObject):
             self.hbox_inputs.remove(channel.parent)
         self.channels = []
         self.output_channels = []
+        self.channel_edit_input_menu = gtk.Menu()
+        self.channel_edit_input_menu_item.set_submenu(self.channel_edit_input_menu)
+        self.channel_edit_input_menu_item.set_sensitive(False)
         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_edit_output_menu = gtk.Menu()
+        self.channel_edit_output_menu_item.set_submenu(self.channel_edit_output_menu)
+        self.channel_edit_output_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)
@@ -345,10 +400,17 @@ class JackMixer(SerializedObject):
         frame.add(channel)
         self.hbox_inputs.pack_start(frame, False)
         channel.realize()
+
+        channel_edit_menu_item = gtk.MenuItem(channel.channel_name)
+        self.channel_edit_input_menu.append(channel_edit_menu_item)
+        channel_edit_menu_item.connect("activate", self.on_edit_input_channel, channel)
+        self.channel_edit_input_menu_item.set_sensitive(True)
+
         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.channels.append(channel)
 
         for outputchannel in self.output_channels:
@@ -393,10 +455,17 @@ class JackMixer(SerializedObject):
         frame.add(channel)
         self.hbox_outputs.pack_start(frame, False)
         channel.realize()
+
+        channel_edit_menu_item = gtk.MenuItem(channel.channel_name)
+        self.channel_edit_output_menu.append(channel_edit_menu_item)
+        channel_edit_menu_item.connect("activate", self.on_edit_output_channel, channel)
+        self.channel_edit_output_menu_item.set_sensitive(True)
+
         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)
+
         self.output_channels.append(channel)
 
     _monitored_channel = None