All of lore.kernel.org
 help / color / mirror / Atom feed
From: Emmanuel Gil Peyrot <linkmauve@jabberfr.org>
To: patch@alsa-project.org
Cc: linkmauve@linkmauve.fr, alsa-devel@alsa-project.org
Subject: [PATCH - hwmixvolume v2 2/7] hwmixvolume: replace PyGTK with gobject-introspection
Date: Tue, 18 Sep 2018 15:42:32 +0200	[thread overview]
Message-ID: <20180918134237.8489-3-linkmauve@jabberfr.org> (raw)
In-Reply-To: <20180918134237.8489-1-linkmauve@jabberfr.org>

From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>

This doesn’t work yet, we require Gtk 3.0 rather than 2.0 and the API
changed quite a lot, so this is but a preparatory patch.

This is done so that we can get rid of GTK+ 2 which has been EOL for
many years already, and to add Python 3 support because Python 2 will
very soon be EOL as well.

Signed-off-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>

diff --git a/hwmixvolume/hwmixvolume b/hwmixvolume/hwmixvolume
index 038bcb3..64d232c 100755
--- a/hwmixvolume/hwmixvolume
+++ b/hwmixvolume/hwmixvolume
@@ -15,7 +15,10 @@
 # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 # PERFORMANCE OF THIS SOFTWARE.
 
-import gobject, gtk
+import gi
+gi.require_version('GLib', '2.0')
+gi.require_version('Gtk', '3.0')
+from gi.repository import GLib, Gtk
 from pyalsa import alsacard, alsahcontrol
 
 INTF_PCM = alsahcontrol.interface_id['PCM']
@@ -57,16 +60,16 @@ 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(self.get_label(info))
         self.label.set_single_line_mode(True)
         self.parent.scales_vbox.pack_start(self.label, expand=False)
         for i in range(info.count):
-            adj = gtk.Adjustment(value=values[i],
+            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.HScale(adj)
             scale.set_draw_value(False)
             self.parent.scales_vbox.pack_start(scale, expand=False)
             self.scales.append(scale)
@@ -157,7 +160,7 @@ class Stream:
             f.close()
         return cmdline.replace('\x00', ' ').strip()
 
-class MixerWindow(gtk.Window):
+class MixerWindow(Gtk.Window):
     card_numbers = alsacard.card_list()
     current_card = -1
     hcontrol = None
@@ -167,21 +170,21 @@ class MixerWindow(gtk.Window):
     hctl_sources = []
 
     def __init__(self):
-        gtk.Window.__init__(self)
-        self.connect('destroy', lambda w: gtk.main_quit())
+        Gtk.Window.__init__(self)
+        self.connect('destroy', lambda w: Gtk.main_quit())
         self.set_title("Hardware Mixer Volumes")
 
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
         self.add(vbox)
 
-        hbox = gtk.HBox()
+        hbox = Gtk.HBox()
         vbox.pack_start(hbox, expand=False)
 
-        label = gtk.Label("_Sound Card: ")
+        label = Gtk.Label("_Sound Card: ")
         label.set_use_underline(True)
         hbox.pack_start(label, expand=False)
 
-        combo = gtk.combo_box_new_text()
+        combo = Gtk.combo_box_new_text()
         for i in self.card_numbers:
             str = "%d: %s" % (i, alsacard.card_get_name(i))
             combo.append_text(str)
@@ -191,23 +194,23 @@ class MixerWindow(gtk.Window):
         hbox.pack_start(combo)
         label.set_mnemonic_widget(combo)
 
-        self.lock_check = gtk.CheckButton(label="_Lock Channels")
+        self.lock_check = Gtk.CheckButton(label="_Lock Channels")
         self.lock_check.set_active(True)
         vbox.pack_start(self.lock_check, expand=False)
 
-        scrollwin = gtk.ScrolledWindow()
-        scrollwin.set_policy(hscrollbar_policy=gtk.POLICY_NEVER, vscrollbar_policy=gtk.POLICY_AUTOMATIC)
-        scrollwin.set_shadow_type(gtk.SHADOW_NONE)
+        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)
 
-        self.scales_vbox = gtk.VBox()
+        self.scales_vbox = Gtk.VBox()
         scrollwin.add_with_viewport(self.scales_vbox)
 
-        label = gtk.Label()
+        label = Gtk.Label()
         label.set_single_line_mode(True)
         line_height = label.size_request()[1]
         label.destroy()
-        scale = gtk.HScale()
+        scale = Gtk.HScale()
         scale.set_draw_value(False)
         line_height += scale.size_request()[1]
         scale.destroy()
@@ -223,7 +226,7 @@ class MixerWindow(gtk.Window):
 
     def change_card(self, cardnum):
         for s in self.hctl_sources:
-            gobject.source_remove(s)
+            GLib.source_remove(s)
         self.hctl_sources = []
 
         self.hcontrol = self.open_hcontrol_for_card(cardnum)
@@ -249,7 +252,7 @@ class MixerWindow(gtk.Window):
             self.streams.append(stream)
 
         for fd,condition in self.hcontrol.poll_fds:
-            self.hctl_sources.append(gobject.io_add_watch(fd, condition, self.hctl_io_callback))
+            self.hctl_sources.append(GLib.io_add_watch(fd, condition, self.hctl_io_callback))
 
         self.update_msg_label()
 
@@ -267,7 +270,7 @@ class MixerWindow(gtk.Window):
             else:
                 msg = "This card does not have stream controls."
             if not has_msg:
-                self.msg_label = gtk.Label(msg)
+                self.msg_label = Gtk.Label(msg)
                 self.scales_vbox.pack_start(self.msg_label)
                 self.scales_vbox.show_all()
             elif self.msg_label.get_text() != msg:
@@ -280,9 +283,9 @@ class MixerWindow(gtk.Window):
                     mode=alsahcontrol.open_mode['NONBLOCK'])
         except:
             # TODO: alsa error msg
-            dlg = gtk.MessageDialog(self,
-                    gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-                    gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
+            dlg = Gtk.MessageDialog(self,
+                    Gtk.DIALOG_MODAL | Gtk.DIALOG_DESTROY_WITH_PARENT,
+                    Gtk.MESSAGE_ERROR, Gtk.BUTTONS_OK,
                     "Cannot open sound card control device.")
             dlg.run()
             dlg.destroy()
@@ -304,7 +307,7 @@ class MixerWindow(gtk.Window):
 
 def main():
     MixerWindow()
-    gtk.main()
+    Gtk.main()
 
 main()
 
-- 
2.19.0

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  parent reply	other threads:[~2018-09-18 13:42 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20180918134237.8489-1-linkmauve@jabberfr.org>
2018-09-18 13:42 ` [PATCH - hwmixvolume v2 1/7] hwmixvolume: use four spaces instead of one tab for indent Emmanuel Gil Peyrot
2018-09-19  0:54   ` James Cameron
2018-09-20  7:13     ` Takashi Iwai
2018-09-20  8:45       ` James Cameron
2018-09-20  9:20         ` Takashi Iwai
2018-09-20  7:13   ` Takashi Iwai
2018-09-18 13:42 ` Emmanuel Gil Peyrot [this message]
2018-09-18 13:42 ` [PATCH - hwmixvolume v2 3/7] hwmixvolume: switch to GTK+ 3.0 and GLib 2.0 Emmanuel Gil Peyrot
2018-09-19 13:22   ` Takashi Sakamoto
2018-09-19 13:36     ` Emmanuel Gil Peyrot
2018-09-19 14:14       ` Takashi Sakamoto
2018-09-18 13:42 ` [PATCH - hwmixvolume v2 4/7] hwmixvolume: use a with context to open files Emmanuel Gil Peyrot
2018-09-18 13:42 ` [PATCH - hwmixvolume v2 5/7] hwmixvolume: switch the shebang to python Emmanuel Gil Peyrot
2018-09-18 13:42 ` [PATCH - hwmixvolume v2 6/7] hwmixvolume: add my copyright Emmanuel Gil Peyrot
2018-09-18 13:42 ` [PATCH - hwmixvolume v2 7/7] hwmixvolume: mention the new dependencies in the README Emmanuel Gil Peyrot
2018-09-19 14:15 ` [PATCH - hwmixvolume v2 0/7] Migrate to GTK+ 3.0 and allow python3 Takashi Sakamoto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180918134237.8489-3-linkmauve@jabberfr.org \
    --to=linkmauve@jabberfr.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=linkmauve@linkmauve.fr \
    --cc=patch@alsa-project.org \
    --subject='Re: [PATCH - hwmixvolume v2 2/7] hwmixvolume: replace PyGTK with gobject-introspection' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.