Merge lp:~pitti/sessioninstaller/gtk3 into lp:sessioninstaller

Proposed by Martin Pitt
Status: Merged
Merged at revision: 122
Proposed branch: lp:~pitti/sessioninstaller/gtk3
Merge into: lp:sessioninstaller
Diff against target: 632 lines (+115/-114)
4 files modified
sessioninstaller/backends/aptd.py (+12/-12)
sessioninstaller/backends/dummy.py (+2/-2)
sessioninstaller/backends/synaptic.py (+4/-4)
sessioninstaller/core.py (+97/-96)
To merge this branch: bzr merge lp:~pitti/sessioninstaller/gtk3
Reviewer Review Type Date Requested Status
Michael Vogt Approve
Review via email: mp+82142@code.launchpad.net

Description of the change

This ports sessioninstaller to PyGI and GTK3. Please note that with the current GTK you often get crashes when hovering over package names in the list. I fixed that in upstream GTK:

  http://git.gnome.org/browse/gtk+/commit/?id=1c222372d9cae171236add8e3e08d9198cb39a2d

To post a comment you must log in.
Revision history for this message
Martin Pitt (pitti) wrote :

I backported the GTK fix into our ubuntu GTK3 packaging branch, FYI.

Revision history for this message
Michael Vogt (mvo) wrote :

That looks fine. Thanks for doing the port!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'sessioninstaller/backends/aptd.py'
2--- sessioninstaller/backends/aptd.py 2011-01-14 21:30:29 +0000
3+++ sessioninstaller/backends/aptd.py 2011-11-14 13:39:25 +0000
4@@ -23,13 +23,13 @@
5
6 __author__ = "Sebastian Heinlein <devel@glatzor.de>"
7
8-import gtk
9+from gi.repository import Gtk
10
11 from aptdaemon import enums
12 import defer
13 import aptdaemon.client
14 import aptdaemon.errors
15-import aptdaemon.gtkwidgets
16+import aptdaemon.gtk3widgets
17
18 import sessioninstaller.errors
19
20@@ -43,11 +43,11 @@
21
22 def _run_trans(self, trans, parent, interaction):
23 deferred = defer.Deferred()
24- dia = aptdaemon.gtkwidgets.AptProgressDialog(trans)
25+ dia = aptdaemon.gtk3widgets.AptProgressDialog(trans)
26 dia.connect("finished", lambda x: deferred.callback())
27 if parent:
28 dia.realize()
29- dia.window.set_transient_for(parent)
30+ dia.set_transient_for(parent)
31 dia.run(close_on_finished=True, show_error=True,
32 reply_handler=lambda: True,
33 error_handler=deferred.errback)
34@@ -62,19 +62,19 @@
35 def _confirm_deps(self, trans, parent, interaction):
36 if not [pkgs for pkgs in trans.dependencies if pkgs]:
37 return trans
38- dia = aptdaemon.gtkwidgets.AptConfirmDialog(trans)
39+ dia = aptdaemon.gtk3widgets.AptConfirmDialog(trans)
40 if parent:
41 dia.realize()
42- dia.window.set_transient_for(parent)
43+ dia.set_transient_for(parent)
44 res = dia.run()
45 dia.hide()
46- if res == gtk.RESPONSE_OK:
47+ if res == Gtk.ResponseType.OK:
48 return trans
49 raise sessioninstaller.errors.ModifyCancelled
50
51 def install_packages(self, xid, package_names, interaction):
52 deferred = defer.Deferred()
53- parent = gtk.gdk.window_foreign_new(xid)
54+ parent = None # should get from XID, but removed from Gdk 3
55 self.ac.install_packages(package_names, reply_handler=deferred.callback,
56 error_handler=deferred.errback)
57 deferred.add_callback(self._simulate_trans, parent, interaction)
58@@ -85,7 +85,7 @@
59
60 def install_package_files(self, xid, files, interaction):
61 deferred = defer.Deferred()
62- parent = gtk.gdk.window_foreign_new(xid)
63+ parent = None # should get from XID, but removed from Gdk 3
64 #FIXME: Add support for installing serveral files at the same time
65 self.ac.install_file(files[0], reply_handler=deferred.callback,
66 error_handler=deferred.errback)
67@@ -97,7 +97,7 @@
68
69 def remove_packages(self, xid, package_names, interaction):
70 deferred = defer.Deferred()
71- parent = gtk.gdk.window_foreign_new(xid)
72+ parent = None # should get from XID, but removed from Gdk 3
73 self.ac.remove_packages(package_names, reply_handler=deferred.callback,
74 error_handler=deferred.errback)
75 deferred.add_callback(self._simulate_trans, parent, interaction)
76@@ -120,10 +120,10 @@
77 except Exception, error:
78 error = aptdaemon.errors.TransactionFailed(enums.ERROR_UNKNOWN,
79 str(error))
80- dia = aptdaemon.gtkwidgets.AptErrorDialog(error)
81+ dia = aptdaemon.gtk3widgets.AptErrorDialog(error)
82 if parent:
83 dia.realize()
84- dia.window.set_transient_for(parent)
85+ dia.set_transient_for(parent)
86 dia.run()
87 dia.hide()
88 msg = "%s - %s\n%s" % (enums.get_error_string_from_enum(error.code),
89
90=== modified file 'sessioninstaller/backends/dummy.py'
91--- sessioninstaller/backends/dummy.py 2010-04-15 15:00:38 +0000
92+++ sessioninstaller/backends/dummy.py 2011-11-14 13:39:25 +0000
93@@ -23,14 +23,14 @@
94
95 from gettext import gettext as _
96
97-import gtk
98+from gi.repository import Gtk
99
100 class DummyBackend(object):
101
102 """Provide some dummy dialogs which simulate package operations."""
103
104 def _show_message(self, title, text):
105- dia = gtk.MessageDialog(buttons=gtk.BUTTONS_CLOSE, message_format=title)
106+ dia = Gtk.MessageDialog(buttons=Gtk.ButtonsType.CLOSE, message_format=title)
107 dia.format_secondary_text(text)
108 dia.run()
109 dia.hide()
110
111=== modified file 'sessioninstaller/backends/synaptic.py'
112--- sessioninstaller/backends/synaptic.py 2011-01-14 21:30:29 +0000
113+++ sessioninstaller/backends/synaptic.py 2011-11-14 13:39:25 +0000
114@@ -26,7 +26,7 @@
115 import tempfile
116 from gettext import gettext as _
117
118-import gobject
119+from gi.repository import GObject
120
121 from defer import Deferred
122
123@@ -50,9 +50,9 @@
124 "--", "/usr/sbin/synaptic", "--hide-main-window",
125 "--non-interactive"]
126 cmd.extend(opt)
127- flags = gobject.SPAWN_DO_NOT_REAP_CHILD
128- (pid, stdin, stdout, stderr) = gobject.spawn_async(cmd, flags=flags)
129- gobject.child_watch_add(pid, self._on_synaptic_exit, (tempf, deferred))
130+ flags = GObject.SPAWN_DO_NOT_REAP_CHILD
131+ (pid, stdin, stdout, stderr) = GObject.spawn_async(cmd, flags=flags)
132+ GObject.child_watch_add(pid, self._on_synaptic_exit, (tempf, deferred))
133 return deferred
134
135 def _on_synaptic_exit(self, pid, condition, (tempf, deferred)):
136
137=== modified file 'sessioninstaller/core.py'
138--- sessioninstaller/core.py 2011-05-30 17:45:29 +0000
139+++ sessioninstaller/core.py 2011-11-14 13:39:25 +0000
140@@ -41,11 +41,11 @@
141 import dbus.mainloop.glib
142 from gettext import gettext as _
143 import gettext
144-import gio
145-import gobject
146+from gi.repository import Gio
147+from gi.repository import GObject
148+from gi.repository import Gtk
149+from gi.repository import Pango
150 import gst
151-import gtk
152-import pango
153 from xdg.DesktopEntry import DesktopEntry
154
155 import utils
156@@ -165,128 +165,126 @@
157 self.progress_dialog = progress
158
159 def update(self, percent):
160- while gtk.events_pending():
161- gtk.main_iteration()
162+ while Gtk.events_pending():
163+ Gtk.main_iteration()
164 if self.progress_dialog:
165 self.progress_dialog.progress.pulse()
166
167
168-class ErrorDialog(gtk.MessageDialog):
169+class ErrorDialog(Gtk.MessageDialog):
170
171 """Allows to show an error message to the user."""
172
173 def __init__(self, title, message, parent=None):
174- gtk.MessageDialog.__init__(self, type=gtk.MESSAGE_ERROR,
175- buttons=gtk.BUTTONS_CLOSE)
176+ GObject.GObject.__init__(self, message_type=Gtk.MessageType.ERROR,
177+ buttons=Gtk.ButtonsType.CLOSE)
178 if parent:
179 self.realize()
180- self.window.set_transient_for(parent)
181+ self.set_transient_for(parent)
182 self.set_markup("<b><big>%s</big></b>\n\n%s" % (title, message))
183
184
185-class ProgressDialog(gtk.Dialog):
186+class ProgressDialog(Gtk.Dialog):
187
188 """Allows to show the progress of an ongoing action to the user."""
189
190 def __init__(self, title, message, parent=None):
191- gtk.Dialog.__init__(self, buttons=(gtk.STOCK_CANCEL,
192- gtk.RESPONSE_CANCEL))
193+ Gtk.Dialog.__init__(self)
194+ self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
195 if parent:
196 self.realize()
197- self.window.set_transient_for(parent)
198+ self.set_transient_for(parent)
199 self.set_title(title)
200 self.set_resizable(False)
201 self.set_border_width(12)
202 self.vbox.set_spacing(24)
203- self.label = gtk.Label()
204+ self.label = Gtk.Label()
205 self.label.set_markup("<b><big>%s</big></b>\n\n%s" % (title, message))
206 self.label.set_line_wrap(True)
207 self.vbox.add(self.label)
208- self.progress = gtk.ProgressBar()
209+ self.progress = Gtk.ProgressBar()
210 self.progress.set_pulse_step(0.01)
211 self.vbox.add(self.progress)
212- self.set_has_separator(False)
213 self.cancelled = False
214 self.connect("response", self._on_response)
215
216 def _on_response(self, dialog, response):
217- if response == gtk.RESPONSE_CANCEL:
218+ if response == Gtk.ResponseType.CANCEL:
219 self.cancelled = True
220
221
222-class ConfirmInstallDialog(gtk.Dialog):
223+class ConfirmInstallDialog(Gtk.Dialog):
224
225 """Allow to confirm an installation."""
226
227 def __init__(self, title, message, pkgs=[], parent=None, details=None,
228 package_type=None, selectable=False, action=None):
229- gtk.Dialog.__init__(self, buttons=(gtk.STOCK_CANCEL,
230- gtk.RESPONSE_CANCEL))
231+ Gtk.Dialog.__init__(self)
232+ self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
233 if parent:
234 self.realize()
235- self.window.set_transient_for(parent)
236+ self.set_transient_for(parent)
237 self.set_title(title)
238 self.set_resizable(True)
239 self.set_border_width(12)
240 self.vbox.set_spacing(12)
241- self.icon = gtk.image_new_from_stock(gtk.STOCK_DIALOG_QUESTION,
242- gtk.ICON_SIZE_DIALOG)
243+ self.icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_QUESTION,
244+ Gtk.IconSize.DIALOG)
245 self.icon.set_alignment(0 ,0)
246- hbox_base = gtk.HBox()
247+ hbox_base = Gtk.HBox()
248 hbox_base.set_spacing(24)
249- vbox_left = gtk.VBox()
250+ vbox_left = Gtk.VBox()
251 vbox_left.set_spacing(12)
252- hbox_base.pack_start(self.icon, False, True)
253- hbox_base.pack_start(vbox_left, True, True)
254- self.label = gtk.Label()
255+ hbox_base.pack_start(self.icon, False, True, 0)
256+ hbox_base.pack_start(vbox_left, True, True, 0)
257+ self.label = Gtk.Label()
258 self.label.set_alignment(0, 0)
259 self.label.set_markup("<b><big>%s</big></b>\n\n%s" % (title, message))
260 self.label.set_line_wrap(True)
261- vbox_left.pack_start(self.label, False, True)
262- self.set_has_separator(False)
263+ vbox_left.pack_start(self.label, False, True, 0)
264 self.cancelled = False
265- self.vbox.pack_start(hbox_base, True, True)
266+ self.vbox.pack_start(hbox_base, True, True, 0)
267 if not action:
268 action = _("_Install")
269- self.install_button = self.add_button(action, gtk.RESPONSE_OK)
270- self.set_default_response(gtk.RESPONSE_OK)
271+ self.install_button = self.add_button(action, Gtk.ResponseType.OK)
272+ self.set_default_response(Gtk.ResponseType.OK)
273 # Show a list of the plugin packages
274- self.pkg_store = gtk.ListStore(gobject.TYPE_STRING,
275- gobject.TYPE_STRING,
276- gobject.TYPE_BOOLEAN,
277- gobject.TYPE_STRING,
278- gobject.TYPE_STRING,
279- gobject.TYPE_INT)
280- self.pkg_store.set_sort_column_id(COLUMN_SCORE, gtk.SORT_DESCENDING)
281- self.pkg_view = gtk.TreeView(self.pkg_store)
282+ self.pkg_store = Gtk.ListStore(GObject.TYPE_STRING,
283+ GObject.TYPE_STRING,
284+ GObject.TYPE_BOOLEAN,
285+ GObject.TYPE_STRING,
286+ GObject.TYPE_STRING,
287+ GObject.TYPE_INT)
288+ self.pkg_store.set_sort_column_id(COLUMN_SCORE, Gtk.SortType.DESCENDING)
289+ self.pkg_view = Gtk.TreeView(self.pkg_store)
290 self.pkg_view.set_rules_hint(True)
291 self.pkg_view.props.has_tooltip = True
292 self.pkg_view.connect("query-tooltip", self._on_query_tooltip)
293 if selectable:
294- toggle_install = gtk.CellRendererToggle()
295+ toggle_install = Gtk.CellRendererToggle()
296 toggle_install.connect("toggled", self._on_toggled_install)
297- column_install = gtk.TreeViewColumn(_("Install"), toggle_install,
298+ column_install = Gtk.TreeViewColumn(_("Install"), toggle_install,
299 active=COLUMN_INSTALL)
300 self.pkg_view.append_column(column_install)
301 if not package_type:
302 package_type = _("Package")
303- column_desc = gtk.TreeViewColumn(package_type)
304- renderer_warn = gtk.CellRendererPixbuf()
305- renderer_warn.props.stock_size = gtk.ICON_SIZE_MENU
306- column_desc.pack_start(renderer_warn, expand=False)
307+ column_desc = Gtk.TreeViewColumn(package_type)
308+ renderer_warn = Gtk.CellRendererPixbuf()
309+ renderer_warn.props.stock_size = Gtk.IconSize.MENU
310+ column_desc.pack_start(renderer_warn, False)
311 column_desc.set_cell_data_func(renderer_warn, self._render_warning)
312- renderer_desc = gtk.CellRendererText()
313- renderer_desc.props.ellipsize = pango.ELLIPSIZE_END
314- column_desc.pack_start(renderer_desc, expand=True)
315+ renderer_desc = Gtk.CellRendererText()
316+ renderer_desc.props.ellipsize = Pango.EllipsizeMode.END
317+ column_desc.pack_start(renderer_desc, True)
318 column_desc.add_attribute(renderer_desc, "markup", COLUMN_DESC)
319 column_desc.props.expand = True
320 column_desc.props.resizable = True
321 column_desc.props.min_width = 50
322 self.pkg_view.append_column(column_desc)
323 if details:
324- renderer_details = gtk.CellRendererText()
325- renderer_details.props.ellipsize = pango.ELLIPSIZE_END
326- column_details = gtk.TreeViewColumn(details,
327+ renderer_details = Gtk.CellRendererText()
328+ renderer_details.props.ellipsize = Pango.EllipsizeMode.END
329+ column_details = Gtk.TreeViewColumn(details,
330 renderer_details)
331 column_details.add_attribute(renderer_details, "markup",
332 COLUMN_DETAILS)
333@@ -295,11 +293,11 @@
334 self.pkg_view.append_column(column_details)
335 if not (selectable or details):
336 self.pkg_view.props.headers_visible = False
337- self.scrolled_window = gtk.ScrolledWindow()
338- self.scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
339- self.scrolled_window.set_shadow_type(gtk.SHADOW_IN)
340+ self.scrolled_window = Gtk.ScrolledWindow()
341+ self.scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER)
342+ self.scrolled_window.set_shadow_type(Gtk.ShadowType.IN)
343 self.scrolled_window.add(self.pkg_view)
344- vbox_left.pack_start(self.scrolled_window, True, True)
345+ vbox_left.pack_start(self.scrolled_window, True, True, 0)
346 self.install_button.props.sensitive = False
347 for pkg in pkgs:
348 self.add_confirm_package(pkg)
349@@ -330,7 +328,7 @@
350 # Set the dialog default to cancel if a restricted packages is
351 # selected for installation
352 if active:
353- self.set_default_response(gtk.RESPONSE_CANCEL)
354+ self.set_default_response(Gtk.ResponseType.CANCEL)
355 else:
356 tooltip = ""
357 desc = utils.get_package_desc(name, summary)
358@@ -362,14 +360,17 @@
359 def _on_query_tooltip(self, treeview, x, y, keyboard_tip, tooltip):
360 """Handle tooltips for restrcited packages."""
361 try:
362- model, path, iter = treeview.get_tooltip_context(x, y, keyboard_tip)
363+ result, out_x, out_y, model, path, iter = treeview.get_tooltip_context(x, y, keyboard_tip)
364+ if not result:
365+ return False
366 except TypeError:
367 return False
368+
369 text = model[path][COLUMN_TOOLTIP]
370 if not text:
371 return False
372- tooltip.set_icon_from_icon_name(gtk.STOCK_DIALOG_WARNING,
373- gtk.ICON_SIZE_DIALOG)
374+ tooltip.set_icon_from_icon_name(Gtk.STOCK_DIALOG_WARNING,
375+ Gtk.IconSize.DIALOG)
376 tooltip.set_markup(text)
377 treeview.set_tooltip_row(tooltip, path)
378 return True
379@@ -384,19 +385,19 @@
380 return
381 self.install_button.props.sensitive = False
382
383- def _render_warning(self, cell, renderer, model, iter):
384+ def _render_warning(self, cell, renderer, model, iter, data):
385 """Show a warning icon for restricted packages."""
386 if model.get_value(iter, COLUMN_TOOLTIP):
387- renderer.props.stock_id = gtk.STOCK_DIALOG_WARNING
388+ renderer.props.stock_id = Gtk.STOCK_DIALOG_WARNING
389
390 def run(self):
391 """Run the dialog."""
392 if len(self.pkg_store) > 4:
393- self.scrolled_window.set_policy(gtk.POLICY_NEVER,
394- gtk.POLICY_AUTOMATIC)
395+ self.scrolled_window.set_policy(Gtk.PolicyType.NEVER,
396+ Gtk.PolicyType.AUTOMATIC)
397 self.pkg_view.set_size_request(-1, 240)
398 self.show_all()
399- res = gtk.Dialog.run(self)
400+ res = Gtk.Dialog.run(self)
401 self.hide()
402 self.destroy()
403 return res
404@@ -408,7 +409,7 @@
405
406 def __init__(self, bus=None):
407 log.info("Starting service")
408- self.loop = gobject.MainLoop()
409+ self.loop = GObject.MainLoop()
410 if not bus:
411 bus = dbus.SessionBus()
412 self.bus = bus
413@@ -416,7 +417,7 @@
414 dbus.service.Object.__init__(self, bus_name, PACKAGEKIT_DBUS_PATH)
415 self._cache = None
416 self.backend = Backend()
417- gobject.timeout_add_seconds(DAEMON_IDLE_CHECK_INTERVAL,
418+ GObject.timeout_add_seconds(DAEMON_IDLE_CHECK_INTERVAL,
419 self._check_for_inactivity)
420 self._tracks = 0
421 self._last_timestamp = time.time()
422@@ -426,7 +427,7 @@
423 idle_time = time.time() - self._last_timestamp
424 log.debug("Checking for inactivity (%is)", idle_time)
425 if not self._tracks and \
426- not gobject.main_context_default().pending() and \
427+ not GObject.main_context_default().pending() and \
428 idle_time > DAEMON_IDLE_TIMEOUT:
429 self.loop.quit()
430 log.info("Shutting down because of inactivity")
431@@ -466,7 +467,7 @@
432 "/usr/bin/gst-install"]:
433 return_value(None)
434 # Return the application name in the case of an installed application
435- for app in gio.app_info_get_all():
436+ for app in Gio.app_info_get_all():
437 if app.get_executable() == exe:
438 return_value(app.get_name())
439 return_value(os.path.basename(exe))
440@@ -612,7 +613,7 @@
441 @track_usage
442 @inline_callbacks
443 def _install_package_files(self, xid, files, interaction, sender):
444- parent = gtk.gdk.window_foreign_new(xid)
445+ parent = None # should get from XID, but removed from Gdk 3
446 header = ""
447 if len(files) != 1:
448 header = _("Failed to install multiple package files")
449@@ -657,7 +658,7 @@
450 "repositories as far as possible.")
451 confirm = ConfirmInstallDialog(title, message, parent=parent)
452 confirm.add_confirm(files[0], desc)
453- if confirm.run() == gtk.RESPONSE_CANCEL:
454+ if confirm.run() == Gtk.ResponseType.CANCEL:
455 raise errors.ModifyCancelled
456 yield self.backend.install_package_files(xid,
457 confirm.get_selected_pkgs(),
458@@ -733,7 +734,7 @@
459 @track_usage
460 @inline_callbacks
461 def _install_catalogs(self, xid, files, interaction, sender):
462- parent = gtk.gdk.window_foreign_new(xid)
463+ parent = None # should get from XID, but removed from Gdk 3
464 self._init_cache()
465 arch = os.popen("/usr/bin/dpkg --print-architecture").read().strip()
466 distro, code, release = os.popen("/usr/bin/lsb_release "
467@@ -807,7 +808,7 @@
468 "available: %s", len(missing)) % pkgs
469 self._show_error(header, msg)
470 raise errors.ModifyNoPackagesFound(msg)
471- parent = gtk.gdk.window_foreign_new(xid)
472+ parent = None # should get from XID, but removed from Gdk 3
473 # Create nice messages
474 sender_name = yield self._get_sender_name(sender)
475 title = gettext.ngettext("Install the following software package?",
476@@ -832,7 +833,7 @@
477 len(files)) % " ".join("'%s'")
478 confirm = ConfirmInstallDialog(title, message, pkgs, parent)
479 res = confirm.run()
480- if res == gtk.RESPONSE_OK:
481+ if res == Gtk.ResponseType.OK:
482 yield self.backend.install_packages(xid,
483 confirm.get_selected_pkgs(),
484 interaction)
485@@ -859,7 +860,7 @@
486 @track_usage
487 @inline_callbacks
488 def _install_package_names(self, xid, packages, interaction, sender):
489- parent = gtk.gdk.window_foreign_new(xid)
490+ parent = None # should get from XID, but removed from Gdk 3
491 title = gettext.ngettext("Install additional software package?",
492 "Install additional software packages?",
493 len(packages))
494@@ -884,7 +885,7 @@
495 #FIXME: We should use the cache to provide additional information
496 for pkg in packages:
497 confirm.add_confirm(pkg, "")
498- if confirm.run() == gtk.RESPONSE_CANCEL:
499+ if confirm.run() == Gtk.ResponseType.CANCEL:
500 raise errors.ModifyCancelled
501 yield self.backend.install_packages(xid, packages, interaction)
502
503@@ -908,7 +909,7 @@
504 @track_usage
505 @inline_callbacks
506 def _install_mime_types(self, xid, mime_types_list, interaction, sender):
507- parent = gtk.gdk.window_foreign_new(xid)
508+ parent = None # should get from XID, but removed from Gdk 3
509 if not os.path.exists(utils.APP_INSTALL_DATA):
510 #FIXME: should provide some information about how to find apps
511 header = _("Installing mime type handlers isn't supported")
512@@ -922,7 +923,7 @@
513 sender_name = yield self._get_sender_name(sender)
514 title = _("Searching for suitable software to open files")
515 mime_types = set(mime_types_list)
516- mime_names = [gio.content_type_get_description(mt) for mt in mime_types]
517+ mime_names = [Gio.content_type_get_description(mt) for mt in mime_types]
518 if sender_name:
519 #TRANSLATORS: %s is an application
520 message = gettext.ngettext("%s requires to install software to "
521@@ -939,13 +940,13 @@
522 "following file types is required "
523 "but is not installed:",
524 len(mime_types))
525- mime_types_desc = [gio.content_type_get_description(mime_type) \
526+ mime_types_desc = [Gio.content_type_get_description(mime_type) \
527 for mime_type in mime_types]
528 message += self._get_bullet_list(mime_types_desc)
529 progress = ProgressDialog(title, message, parent)
530 progress.show_all()
531- while gtk.events_pending():
532- gtk.main_iteration()
533+ while Gtk.events_pending():
534+ Gtk.main_iteration()
535 # Search the app-install-data desktop files for mime type handlers
536 pkgs = []
537 partial_providers = False
538@@ -957,8 +958,8 @@
539 if path[0] == "." or not path.endswith(".desktop"):
540 continue
541 if not count % 20:
542- while gtk.events_pending():
543- gtk.main_iteration()
544+ while Gtk.events_pending():
545+ Gtk.main_iteration()
546 progress.progress.pulse()
547 if progress.cancelled:
548 progress.hide()
549@@ -979,7 +980,7 @@
550 package_map.setdefault(pkg_name, [[], set(), 0])
551 #FIXME: Don't add desktop entries twice
552 package_map[pkg_name][0].append(desktop_entry)
553- desc = gio.content_type_get_description(mime_type)
554+ desc = Gio.content_type_get_description(mime_type)
555 package_map[pkg_name][1].add(desc)
556 popcon = desktop_entry.get("X-AppInstall-Popcon",
557 type="integer")
558@@ -997,7 +998,7 @@
559 details = None
560 title = _("Install software to open files?")
561 if unsatisfied:
562- unsatisfied_desc = [gio.content_type_get_description(mime_type) \
563+ unsatisfied_desc = [Gio.content_type_get_description(mime_type) \
564 for mime_type in unsatisfied]
565 unsatisfied_str = self._get_bullet_list(unsatisfied_desc)
566 message += "\n\n"
567@@ -1019,7 +1020,7 @@
568 confirm.add_confirm_package(self._cache[pkg], len(package_map) == 1,
569 details, score)
570 res = confirm.run()
571- if res == gtk.RESPONSE_OK:
572+ if res == Gtk.ResponseType.OK:
573 yield self.backend.install_packages(xid,
574 confirm.get_selected_pkgs(),
575 interaction)
576@@ -1137,7 +1138,7 @@
577 structures = [parse_gstreamer_structure(res) for res in resources]
578 kinds = set([struct.kind for struct in structures])
579 # Show a progress dialog
580- parent = gtk.gdk.window_foreign_new(xid)
581+ parent = None # should get from XID, but removed from Gdk 3
582 sender_name = yield self._get_sender_name(sender)
583 title = _("Searching for multimedia plugins")
584 # Get a nice dialog message
585@@ -1217,16 +1218,16 @@
586 for struct in structures])
587 progress = ProgressDialog(title, message, parent)
588 progress.show_all()
589- while gtk.events_pending():
590- gtk.main_iteration()
591+ while Gtk.events_pending():
592+ Gtk.main_iteration()
593 # Search the package cache for packages providing the plugins
594 pkgs = []
595 partial_providers = False
596 self._init_cache(progress)
597 for count, pkg in enumerate(self._cache):
598 if not count % 100:
599- while gtk.events_pending():
600- gtk.main_iteration()
601+ while Gtk.events_pending():
602+ Gtk.main_iteration()
603 progress.progress.pulse()
604 if progress.cancelled:
605 progress.hide()
606@@ -1317,7 +1318,7 @@
607 install = pkg.name in best_providers
608 confirm.add_confirm_package(pkg, install, details, score)
609 res = confirm.run()
610- if res == gtk.RESPONSE_OK:
611+ if res == Gtk.ResponseType.OK:
612 yield self.backend.install_packages(xid,
613 confirm.get_selected_pkgs(),
614 interaction)
615@@ -1344,7 +1345,7 @@
616 @track_usage
617 @inline_callbacks
618 def _remove_package_by_files(self, xid, files, interaction, sender):
619- parent = gtk.gdk.window_foreign_new(xid)
620+ parent = None # should get from XID, but removed from Gdk 3
621 sender_name = yield self._get_sender_name(sender)
622 if [filename for filename in files if not filename.startswith("/")]:
623 raise errors.ModifyFailed("Only absolute file names")
624@@ -1400,7 +1401,7 @@
625 selectable=len(pkgs) > 1, pkgs=pkgs,
626 action=_("_Remove"))
627 res = confirm.run()
628- if res == gtk.RESPONSE_OK:
629+ if res == Gtk.ResponseType.OK:
630 yield self.backend.remove_packages(xid,
631 confirm.get_selected_pkgs(),
632 interaction)

Subscribers

People subscribed via source and target branches