[alsa-devel] [PATCH - hwmixvolume v2 3/7] hwmixvolume: switch to GTK+ 3.0 and GLib 2.0
Takashi Sakamoto
o-takashi at sakamocchi.jp
Wed Sep 19 15:22:48 CEST 2018
Hi,
On Sep 18 2018 22:42, Emmanuel Gil Peyrot wrote:
> From: Emmanuel Gil Peyrot <linkmauve at linkmauve.fr>
>
> This replaces VBox and HBox with Grid (using Gtk.Orientation), HScale
> with Scale, creates labels with mnemonics, set hexpand and vexpand
> properly, use the correct enum container classes, use the correct getter
> for size request, and finally update to the correct GLib watch function.
>
> Signed-off-by: Emmanuel Gil Peyrot <linkmauve at linkmauve.fr>
>
> diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume
> index 64d232c..8e0b6b8 100755
> --- a/hwmixvolume/hwmixvolume
> +++ b/hwmixvolume/hwmixvolume
> @@ -60,18 +60,18 @@ class Stream:
> value = alsahcontrol.Value(self.element)
> value.read()
> values = value.get_tuple(TYPE_INTEGER, info.count)
> - self.label = Gtk.Label(self.get_label(info))
> + self.label = Gtk.Label.new(self.get_label(info))
> self.label.set_single_line_mode(True)
> - self.parent.scales_vbox.pack_start(self.label, expand=False)
> + self.parent.scales_vbox.add(self.label)
> for i in range(info.count):
> adj = Gtk.Adjustment(value=values[i],
> lower=info.min, upper=info.max,
> step_incr=1,
> page_incr=(info.max-info.min+1)/8)
> adj.connect('value-changed', self.update_ctl_from_scale, i)
> - scale = Gtk.HScale(adj)
> + scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL, adjustment=adj)
> scale.set_draw_value(False)
> - self.parent.scales_vbox.pack_start(scale, expand=False)
> + self.parent.scales_vbox.add(scale)
> self.scales.append(scale)
> self.adjustments.append(adj)
> self.parent.scales_vbox.show_all()
> @@ -174,45 +174,48 @@ class MixerWindow(Gtk.Window):
> self.connect('destroy', lambda w: Gtk.main_quit())
> self.set_title("Hardware Mixer Volumes")
>
> - vbox = Gtk.VBox()
> + vbox = Gtk.Grid()
> + vbox.set_orientation(Gtk.Orientation.VERTICAL)
As long as I know, g-i of Gtk+3 has both of 'Gtk.VBox' and 'Gtk.HBox'.
I don't object to this patchset if they satisfy your demand, however
from my curiosity would I ask you the reason to use 'Gtk.Grid' instead
of them? This patch includes no lines to add rows/colums and to me no
requirement to use grid in this point.
> self.add(vbox)
>
> - hbox = Gtk.HBox()
> - vbox.pack_start(hbox, expand=False)
> + hbox = Gtk.Grid()
> + vbox.add(hbox)
>
> - label = Gtk.Label("_Sound Card: ")
> - label.set_use_underline(True)
> - hbox.pack_start(label, expand=False)
> + label = Gtk.Label.new_with_mnemonic("_Sound Card: ")
> + hbox.add(label)
>
> - combo = Gtk.combo_box_new_text()
> + combo = Gtk.ComboBoxText()
> + combo.set_hexpand(True)
> for i in self.card_numbers:
> str = "%d: %s" % (i, alsacard.card_get_name(i))
> combo.append_text(str)
> if len(self.card_numbers) > 0:
> combo.set_active(0)
> combo.connect('changed', lambda c: self.change_card(self.card_numbers[combo.get_active()]))
> - hbox.pack_start(combo)
> + hbox.add(combo)
> label.set_mnemonic_widget(combo)
>
> - self.lock_check = Gtk.CheckButton(label="_Lock Channels")
> + self.lock_check = Gtk.CheckButton.new_with_mnemonic(label="_Lock Channels")
> self.lock_check.set_active(True)
> - vbox.pack_start(self.lock_check, expand=False)
> + vbox.add(self.lock_check)
>
> scrollwin = Gtk.ScrolledWindow()
> - scrollwin.set_policy(hscrollbar_policy=Gtk.POLICY_NEVER, vscrollbar_policy=Gtk.POLICY_AUTOMATIC)
> - scrollwin.set_shadow_type(Gtk.SHADOW_NONE)
> - vbox.pack_start(scrollwin)
> + scrollwin.set_policy(hscrollbar_policy=Gtk.PolicyType.NEVER, vscrollbar_policy=Gtk.PolicyType.AUTOMATIC)
> + scrollwin.set_shadow_type(Gtk.ShadowType.NONE)
> + scrollwin.set_vexpand(True)
> + vbox.add(scrollwin)
>
> - self.scales_vbox = Gtk.VBox()
> - scrollwin.add_with_viewport(self.scales_vbox)
> + self.scales_vbox = Gtk.Grid()
> + self.scales_vbox.set_orientation(Gtk.Orientation.VERTICAL)
> + scrollwin.add(self.scales_vbox)
>
> label = Gtk.Label()
> label.set_single_line_mode(True)
> - line_height = label.size_request()[1]
> + line_height = max(label.get_size_request().height, 0)
> label.destroy()
> - scale = Gtk.HScale()
> + scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL)
> scale.set_draw_value(False)
> - line_height += scale.size_request()[1]
> + line_height += max(scale.get_size_request().height, 0)
> scale.destroy()
> # always have space for at least four sliders
> scrollwin.set_size_request(width=-1, height=line_height*4+4)
> @@ -252,7 +255,7 @@ class MixerWindow(Gtk.Window):
> self.streams.append(stream)
>
> for fd,condition in self.hcontrol.poll_fds:
> - self.hctl_sources.append(GLib.io_add_watch(fd, condition, self.hctl_io_callback))
> + self.hctl_sources.append(GLib.io_add_watch(fd, 0, GLib.IOCondition(condition), self.hctl_io_callback))
>
> self.update_msg_label()
>
> @@ -270,8 +273,9 @@ class MixerWindow(Gtk.Window):
> else:
> msg = "This card does not have stream controls."
> if not has_msg:
> - self.msg_label = Gtk.Label(msg)
> - self.scales_vbox.pack_start(self.msg_label)
> + self.msg_label = Gtk.Label.new(msg)
> + self.msg_label.set_vexpand(True)
> + self.scales_vbox.add(self.msg_label)
> self.scales_vbox.show_all()
> elif self.msg_label.get_text() != msg:
> self.msg_label.set_text(msg)
> @@ -284,8 +288,8 @@ class MixerWindow(Gtk.Window):
> except:
> # TODO: alsa error msg
> dlg = Gtk.MessageDialog(self,
> - Gtk.DIALOG_MODAL | Gtk.DIALOG_DESTROY_WITH_PARENT,
> - Gtk.MESSAGE_ERROR, Gtk.BUTTONS_OK,
> + Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
> + Gtk.MessageType.ERROR, Gtk.ButtonsType.OK,
> "Cannot open sound card control device.")
> dlg.run()
> dlg.destroy()
Thanks
Takashi Sakamoto
More information about the Alsa-devel
mailing list