#+TITLE: App chooer and scale buttons #+DATE: 2014-02-07 12:00:00 UTC #+DESCRIPTION: Load a glade file displaying some scale buttons get value on change, displays some app selector widgets and open the applications. #+FILETAGS: GTK-3:python:widgets #+CATEGORY: python #+SLUG: 07-app-chooser-scale-button #+THUBNAIL:../../../images/gtk/tut07-appchooser-scale.png #+BEGIN_COMMENT .. title: App chooer and scale buttons .. slug: 07-app-chooser-scale-button .. date: 2014-02-07 12:00:00 UTC .. tags: GTK-3, python, widgets .. category: python .. description: Load a glade file displaying some scale buttons get value on change, displays some app selector widgets and open the applications. .. type: text #+END_COMMENT #+CAPTION: App chooser & scale widgets [[../../../images/gtk/tut07-appchooser-scale.png]] This example program demonstrates the use of appchooser buttons when selecting an application from the drop down launch the application loading a test text file, this could be a video or mp3 or any file type. you can change the application list by modify the content type value in glade this then shows all registered apps for that content type. #+BEGIN_SRC python #!/usr/bin/env python from gi.repository import Gtk, GLib, Gio class application_gui: """Tutorial 04 text input, spin input, drop down options""" count = 0 def __init__(self): #load in our glade interface xml = Gtk.Builder() xml.add_from_file('tut07.glade') #grab our widget using get_object this is the name of the widget from glade, window1 is the default name self.window = xml.get_object('window1') self.text = xml.get_object('entry1') #load our widgets from the glade file self.widgets = {} self.widgets['scale1'] = xml.get_object('scalebutton1') self.widgets['scale2'] = xml.get_object('scalebutton2') self.widgets['appchooseraudio'] = xml.get_object('appchooserbutton1') self.widgets['appchoosertext'] = xml.get_object('appchooserbutton2') self.widgets['appchooseraudio'].connect('changed', self.app_chooser) self.widgets['appchoosertext'].connect('changed', self.app_chooser) self.widgets['scale1'].connect('value-changed', self.scale) self.widgets['scale2'].connect('value-changed', self.scale) #connect to events, in this instance just quit our application self.window.connect('delete_event', Gtk.main_quit) self.window.connect('destroy', lambda quit: Gtk.main_quit()) #show the window else there is nothing to see :) self.window.show() def app_chooser(self, widget): list_view_model = widget.get_model() active_iter_index = widget.get_active() row_iter = list_view_model.get_iter(active_iter_index) app_info = list_view_model.get_value(row_iter, 0) gio_file = Gio.File.new_for_path('/tmp/tut07-appchooser-test.txt') app_info.launch((gio_file,), None) self.text.set_text(widget.get_name() + ' ' + app_info.get_name()) def scale(self, widget, value): self.text.set_text(widget.get_name() + ' ' + str(value)) application = application_gui() Gtk.main() #+END_SRC