On Sat, 14 Jan 2017 at 23:36:55 +0000, James Clarke wrote: > It seems GetMultilinePage's get_value also has a call to get_text without > the extra parameter, but a grep for GetMultilinePage only shows the class > definition, with no uses... deletion candidate? From what I can tell, it > was added in 3739eb89aa, but even then it wasn't being used by anything? > Anyway, if it needs to stay, the extra True needs to be added to it too.
There's also infinite recursion here, if the prompt doesn't contain ENTER: def get_multiline(prompt, *args, **kwargs): _assert_context(reportbug_context) if 'ENTER' in prompt: # This is a list, let's handle it the best way return get_list(prompt, *args, **kwargs) else: return get_multiline(prompt, *args, **kwargs) I suspect that last line was intended to be a GetMultilinePage wrapper. But I can't actually test this, because the only use of get_multiline() does have ENTER in its prompt (and it crashes - fix attached). I also turned on deprecation warnings (python -Wall) and fixed most of them. Some remain, particularly constructors for dialogs; I don't know PyGTK well enough to immediately know what it wants there. S
>From a79911a14a226cd068bdb5d1e8e1bd101e457ea5 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Sat, 14 Jan 2017 23:59:01 +0000 Subject: [PATCH 10/14] gtk2_ui: hook up GetMultilinePage the way it was presumably meant to work --- reportbug/ui/gtk2_ui.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/reportbug/ui/gtk2_ui.py b/reportbug/ui/gtk2_ui.py index f055d23..50bd195 100644 --- a/reportbug/ui/gtk2_ui.py +++ b/reportbug/ui/gtk2_ui.py @@ -1731,7 +1731,7 @@ def get_multiline(prompt, *args, **kwargs): # This is a list, let's handle it the best way return get_list(prompt, *args, **kwargs) else: - return get_multiline(prompt, *args, **kwargs) + return _get_multiline(prompt, *args, **kwargs) pages = {'get_string': GetStringPage, 'get_password': GetPasswordPage, @@ -1745,6 +1745,7 @@ pages = {'get_string': GetStringPage, 'select_options': SelectOptionsPage, 'get_list': GetListPage, 'system': SystemPage, + '_get_multiline': GetMultilinePage, } dialogs = {'yes_no': YesNoDialog, 'get_filename': GetFilenameDialog, -- 2.11.0
>From c94b7604ca402727ea0c01126dab4cfe3464ec05 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Sun, 15 Jan 2017 00:21:57 +0000 Subject: [PATCH 11/14] gtk2_ui: Use modern form of constructor for Gtk.Alignment The one with positional parameters is no longer supported. --- reportbug/ui/gtk2_ui.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/reportbug/ui/gtk2_ui.py b/reportbug/ui/gtk2_ui.py index 50bd195..a6b0e11 100644 --- a/reportbug/ui/gtk2_ui.py +++ b/reportbug/ui/gtk2_ui.py @@ -158,13 +158,16 @@ class CustomDialog(Gtk.Dialog): hbox = Gtk.HBox(spacing=10) vbox.pack_start(hbox, False, True, 0) - align = Gtk.Alignment(0.5, 0.5, 1.0, 1.0) + # TODO: deprecated, new code is meant to set the halign/valign/margin + # properties on the child widget instead. Also this is probably + # useless without having a child widget? + align = Gtk.Alignment(xalign=0.5, yalign=0.5, xscale=1.0, yscale=1.0) hbox.pack_start(align, False, True, 0) image = Gtk.Image.new_from_stock(stock_image, Gtk.IconSize.DIALOG) hbox.pack_start(image, True, True, 0) - label = Gtk.Label(message) + label = Gtk.Label(label=message) label.set_line_wrap(True) label.set_justify(Gtk.Justification.FILL) label.set_selectable(True) @@ -395,7 +398,7 @@ class BugPage(Gtk.EventBox, threading.Thread): self.bug_status = None vbox = Gtk.VBox(spacing=12) - vbox.pack_start(Gtk.Label("Retrieving bug information."), False, True, 0) + vbox.pack_start(Gtk.Label(label="Retrieving bug information."), False, True, 0) self.progress = Gtk.ProgressBar() self.progress.set_pulse_step(0.01) @@ -436,7 +439,7 @@ class BugPage(Gtk.EventBox, threading.Thread): def not_found(self): _assert_context(ui_context) self.drop_progressbar() - self.add(Gtk.Label("The bug can't be fetched or it doesn't exist.")) + self.add(Gtk.Label(label="The bug can't be fetched or it doesn't exist.")) self.show_all() def found(self, info): @@ -446,7 +449,7 @@ class BugPage(Gtk.EventBox, threading.Thread): bodies = info[1] vbox = Gtk.VBox(spacing=12) vbox.set_border_width(12) - label = Gtk.Label('Description: ' + desc) + label = Gtk.Label(label='Description: ' + desc) label.set_line_wrap(True) label.set_justify(Gtk.Justification.FILL) vbox.pack_start(label, False, True, 0) @@ -465,7 +468,7 @@ class BugPage(Gtk.EventBox, threading.Thread): vbox.pack_start(scrolled, True, True, 0) bbox = Gtk.HButtonBox() - button = Gtk.Button("Open in browser") + button = Gtk.Button(label="Open in browser") button.connect('clicked', self.on_open_browser) bbox.pack_start(button, True, True, 0) if not self.queryonly: -- 2.11.0
>From c337a37af96df2c8564f5455bdc41225cd148683 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Sun, 15 Jan 2017 00:22:53 +0000 Subject: [PATCH 12/14] gtk2_ui: Reduce deprecation spam by using named properties Positional parameters to most GObject constructors are deprecated. --- reportbug/ui/gtk2_ui.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/reportbug/ui/gtk2_ui.py b/reportbug/ui/gtk2_ui.py index a6b0e11..6f7c793 100644 --- a/reportbug/ui/gtk2_ui.py +++ b/reportbug/ui/gtk2_ui.py @@ -472,7 +472,7 @@ class BugPage(Gtk.EventBox, threading.Thread): button.connect('clicked', self.on_open_browser) bbox.pack_start(button, True, True, 0) if not self.queryonly: - button = Gtk.Button("Reply") + button = Gtk.Button(label="Reply") button.set_image(Gtk.Image.new_from_stock(Gtk.STOCK_EDIT, Gtk.IconSize.BUTTON)) button.connect('clicked', self.on_reply) bbox.pack_start(button, True, True, 0) @@ -515,7 +515,7 @@ class BugsDialog(Gtk.Dialog): def show_bug(self, number, *args): page = BugPage(self.assistant, self, number, self.queryonly, *args) - self.notebook.append_page(page, Gtk.Label(number)) + self.notebook.append_page(page, Gtk.Label(label=number)) page.start() @@ -705,7 +705,7 @@ class IntroPage(Page): vbox = Gtk.VBox(spacing=24) - label = Gtk.Label(""" + label = Gtk.Label(label=""" <b>Reportbug</b> is a tool designed to make the reporting of bugs in Debian and derived distributions relatively painless. This wizard will guide you through the bug reporting process step by step. @@ -1088,11 +1088,11 @@ class HandleBTSQueryPage(TreePage): def create_widget(self): _assert_context(ui_context) vbox = Gtk.VBox(spacing=6) - self.label = Gtk.Label("List of bugs. Select a bug to retrieve and submit more information.") + self.label = Gtk.Label(label="List of bugs. Select a bug to retrieve and submit more information.") vbox.pack_start(self.label, False, True, 6) hbox = Gtk.HBox(spacing=6) - label = Gtk.Label("Filter:") + label = Gtk.Label(label="Filter:") hbox.pack_start(label, False, True, 0) self.entry = Gtk.Entry() hbox.pack_start(self.entry, True, True, 0) @@ -1114,7 +1114,7 @@ class HandleBTSQueryPage(TreePage): self.view.append_column(column) vbox.pack_start(scrolled, True, True, 0) - button = Gtk.Button("Retrieve and submit bug information") + button = Gtk.Button(label="Retrieve and submit bug information") button.set_image(Gtk.Image.new_from_stock(Gtk.STOCK_INFO, Gtk.IconSize.BUTTON)) button.connect('clicked', self.on_retrieve_info) vbox.pack_start(button, False, True, 0) @@ -1300,7 +1300,7 @@ class EditorPage(Page): _assert_context(ui_context) vbox = Gtk.VBox(spacing=6) hbox = Gtk.HBox(spacing=12) - hbox.pack_start(Gtk.Label("Subject: "), False, True, 0) + hbox.pack_start(Gtk.Label(label="Subject: "), False, True, 0) self.subject = Gtk.Entry() hbox.pack_start(self.subject, True, True, 0) vbox.pack_start(hbox, False, True, 0) @@ -1335,7 +1335,7 @@ class EditorPage(Page): if gtkspellcheck is NotImplemented: box = Gtk.EventBox() - label = Gtk.Label("Please install <b>python-gtkspellcheck</b> to enable spell checking") + label = Gtk.Label(label="Please install <b>python-gtkspellcheck</b> to enable spell checking") label.set_use_markup(True) label.set_line_wrap(True) label.set_selectable(True) @@ -1448,12 +1448,12 @@ class SelectOptionsPage(Page): continue # stdout is a textview for us if 'Print message to stdout' in desc: - button = Gtk.Button("Display message in a text view") + button = Gtk.Button(label="Display message in a text view") button.connect('clicked', self.on_display_clicked) buttons.append(button) else: button = Gtk.Button() - label = Gtk.Label(options[menuopt.lower()]) + label = Gtk.Label(label=options[menuopt.lower()]) button.add(label) button.connect('clicked', self.on_clicked, menuopt.lower()) if menuopt.isupper(): -- 2.11.0
>From f70c4dcc86afdc26f8e60c2a6c9d2829717db81e Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Sun, 15 Jan 2017 00:23:11 +0000 Subject: [PATCH 13/14] gtk2_ui: Reduce deprecation spam by using named constructors --- reportbug/ui/gtk2_ui.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reportbug/ui/gtk2_ui.py b/reportbug/ui/gtk2_ui.py index 6f7c793..5ed0f15 100644 --- a/reportbug/ui/gtk2_ui.py +++ b/reportbug/ui/gtk2_ui.py @@ -716,8 +716,8 @@ This wizard will guide you through the bug reporting process step by step. label.set_justify(Gtk.Justification.FILL) vbox.pack_start(label, False, True, 0) - link = Gtk.LinkButton("http://alioth.debian.org/projects/reportbug", - "Homepage of reportbug project") + link = Gtk.LinkButton.new_with_label("http://alioth.debian.org/projects/reportbug", + "Homepage of reportbug project") vbox.pack_start(link, False, True, 0) return vbox @@ -1610,7 +1610,7 @@ class ReportbugAssistant(Gtk.Assistant): def confirm_exit(self, *args): _assert_context(ui_context) - dialog = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, + dialog = Gtk.MessageDialog.new(None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.WARNING, Gtk.ButtonsType.YES_NO, "Are you sure you want to quit Reportbug?") response = dialog.run() @@ -1785,7 +1785,7 @@ def initialize(): except ImportError: message = """Please install the %s package to use the GTK+(known as 'gtk2' in reportbug) interface. Falling back to 'text' interface.""" - dialog = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, + dialog = Gtk.MessageDialog.new(None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.INFO, Gtk.ButtonsType.CLOSE, None) dialog.set_markup(message % "<b>gir1.2-vte-2.91</b>") dialog.run() -- 2.11.0
>From d171f77237a790d13d6287162fac28231d67c294 Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Sun, 15 Jan 2017 00:29:24 +0000 Subject: [PATCH 14/14] gtk2_ui: Remove deprecated threading calls that no longer do anything --- reportbug/ui/gtk2_ui.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/reportbug/ui/gtk2_ui.py b/reportbug/ui/gtk2_ui.py index 5ed0f15..0388668 100644 --- a/reportbug/ui/gtk2_ui.py +++ b/reportbug/ui/gtk2_ui.py @@ -49,9 +49,6 @@ global Vte gtkspellcheck = None -#gtk.set_interactive(0) -Gdk.threads_init() - import sys import re import os @@ -535,9 +532,7 @@ class ReportbugApplication(threading.Thread): raise AssertionError('Could not acquire UI context') ui_context.push_thread_default() - Gdk.threads_enter() Gtk.main() - Gdk.threads_leave() def get_last_value(self): _assert_context(reportbug_context) -- 2.11.0