[PATCH 3/6] Port to Gtk3 and the new design

Martin Gracik mgracik at redhat.com
Wed Jul 11 12:18:57 UTC 2012


the whole set looks fine to me, I just have one comment below

----- Original Message -----
> ---
>  meh/__init__.py           |    3 +-
>  meh/handler.py            |    5 +-
>  meh/ui/gui.py             |  119 +++++++++------------
>  meh/ui/text.py            |    2 +-
>  po/python-meh.pot         |   59 ++++++++----
>  setup.py                  |    2 +-
>  ui/detailed-dialog.glade  |  171 -------------------------------
>  ui/exception-dialog.glade |  248
>  +++++++++++++++++++++++++++++++++++++++++++++
>  8 files changed, 346 insertions(+), 263 deletions(-)
>  delete mode 100644 ui/detailed-dialog.glade
>  create mode 100644 ui/exception-dialog.glade
> 
> diff --git a/meh/__init__.py b/meh/__init__.py
> index 2732e66..69352f8 100644
> --- a/meh/__init__.py
> +++ b/meh/__init__.py
> @@ -25,7 +25,8 @@
>  # exception is hit.
>  MAIN_RESPONSE_DEBUG = 0
>  MAIN_RESPONSE_SAVE = 1
> -MAIN_RESPONSE_OK = 2
> +MAIN_RESPONSE_QUIT = 2
> +MAIN_RESPONSE_NONE = 3
>  
>  # And these constants represent the return values of buttons on the
>  exception
>  # saving dialog.
> diff --git a/meh/handler.py b/meh/handler.py
> index 143c1b9..75dca12 100644
> --- a/meh/handler.py
> +++ b/meh/handler.py
> @@ -80,7 +80,7 @@ class ExceptionHandler(object):
>             a subclass.
>          """
>  
> -        responseHash = {MAIN_RESPONSE_OK: self.runQuit,
> +        responseHash = {MAIN_RESPONSE_QUIT: self.runQuit,
>                          MAIN_RESPONSE_DEBUG: self.runDebug,
>                          MAIN_RESPONSE_SAVE: self.runSave}
>  
> @@ -107,8 +107,7 @@ class ExceptionHandler(object):
>              if not win:
>                  self.runQuit((ty, value, tb))
>  
> -            win.run()
> -            rc = win.getrc()
> +            rc = win.run()
>  
>              try:
>                  responseHash[rc]((ty, value, tb))
> diff --git a/meh/ui/gui.py b/meh/ui/gui.py
> index ec05739..2b6ff15 100644
> --- a/meh/ui/gui.py
> +++ b/meh/ui/gui.py
> @@ -18,15 +18,14 @@
>  #
>  from meh import *
>  from meh.ui import *
> -import gtk
> -import gtk.glade
>  import os
>  import report
> +from gi.repository import Gtk
>  
>  import gettext
>  _ = lambda x: gettext.ldgettext("python-meh", x)
>  
> -def findGladeFile(file):
> +def find_glade_file(file):
>      path = os.environ.get("GLADEPATH",
>      "./:ui/:/tmp/updates/:/tmp/updates/ui/:/usr/share/python-meh/")
>      for d in path.split(":"):
>          fn = d + file
> @@ -34,14 +33,6 @@ def findGladeFile(file):
>              return fn
>      raise RuntimeError, "Unable to find glade file %s" % file
>  
> -def findPixmap(file):
> -    path = os.environ.get("PIXMAPPATH",
> "./:pixmaps/:/tmp/updates/:/tmp/updates/pixmaps/:/usr/share/python-meh/")
> -    for d in path.split(":"):
> -        fn = d + file
> -        if os.access(fn, os.R_OK):
> -            return fn
> -    return None
> -
>  class GraphicalIntf(AbstractIntf):
>      def __init__(self, *args, **kwargs):
>          AbstractIntf.__init__(self, *args, **kwargs)
> @@ -83,74 +74,66 @@ class
> MainExceptionWindow(AbstractMainExceptionWindow):
>          AbstractMainExceptionWindow.__init__(self, shortTraceback,
>          longTracebackFile,
>                                               *args, **kwargs)
>  
> -        xml = gtk.glade.XML(findGladeFile("detailed-dialog.glade"),
> domain="python-meh")
> -        self.dialog = xml.get_widget("detailedDialog")
> -        self.mainVBox = xml.get_widget("mainVBox")
> -        self.hbox = xml.get_widget("hbox1")
> -        self.info = xml.get_widget("info")
> -        self.detailedExpander = xml.get_widget("detailedExpander")
> -        self.detailedView = xml.get_widget("detailedView")
> -
> -        # Set the custom icon.
> -        img = gtk.Image()
> -        img.set_from_file(findPixmap("exception.png"))
> -        self.hbox.pack_start(img)
> -        self.hbox.reorder_child(img, 0)
> -
> -        # Set the buttons.
> -        for (button, response) in [(_("Debu_g"),
> MAIN_RESPONSE_DEBUG),
> -                                   ("gtk-save", MAIN_RESPONSE_SAVE),
> -                                   (_("_Exit"), MAIN_RESPONSE_OK)]:
> -            self.dialog.add_button(button, response)
> -
> -        self.dialog.set_default_response(MAIN_RESPONSE_OK)
> -
> -        self.info.set_text(_("An unhandled exception has occurred.
>  This "
> -                             "is most likely a bug.  Please save a
> copy "
> -                             "of the detailed exception and file a
> bug "
> -                             "report."))
> -
> -        if longTracebackFile:
> -            f = open(longTracebackFile)
> -
> -            textbuf = gtk.TextBuffer()
> -            i = textbuf.get_start_iter()
> +        builder = Gtk.Builder()
> +        glade_file = find_glade_file("exception-dialog.glade")
> +        builder.add_from_file(glade_file)
> +        builder.connect_signals(self)
>  
> -            while True:
> -                # Wish readline would give StopIteration at the end
> of a file.
> -                line = f.readline()
> -                if line == "":
> -                    break
> +        self._main_window = builder.get_object("exceptionWindow")
>  
> -                if __builtins__.get("type")(line) != unicode:
> -                    try:
> -                        line = unicode(line, encoding='utf-8')
> -                    except UnicodeDecodeError:
> -                        pass
> +        self._traceback_buffer =
> builder.get_object("tracebackBuffer")
>  
> -                textbuf.insert(i, line)
> +        if longTracebackFile:
> +            with open(longTracebackFile) as fobj:
> +                long_traceback = ""
> +                for line in fobj:
> +                    long_traceback += line

you could use

long_traceback = ''.join(fobj)

>  
> -            f.close()
> -            self.detailedView.set_buffer(textbuf)
> -        else:
> -            self.mainVBox.remove(self.detailedExpander)
> +        self._traceback_buffer.set_text(long_traceback)
> +        self._response = MAIN_RESPONSE_QUIT
>  
>      def destroy(self, *args, **kwargs):
> -        self.dialog.destroy()
> +        self._main_window.destroy()
>  
>      def run(self, *args, **kwargs):
> -        self.dialog.show_all()
> -        self.rc = self.dialog.run()
> -        self.dialog.destroy()
> +        self._main_window.show_all()
> +        Gtk.main()
> +        self.destroy()
> +        return self._response
> +
> +    def on_report_clicked(self, button):
> +        self._response = MAIN_RESPONSE_SAVE
> +        Gtk.main_quit()
> +
> +    def on_quit_clicked(self, button):
> +        self._response = MAIN_RESPONSE_QUIT
> +        Gtk.main_quit()
> +
> +    def on_debug_clicked(self, button):
> +        self._response = MAIN_RESPONSE_DEBUG
> +        Gtk.main_quit()
> +
> +    def on_expander_activated(self, expander, *args):
> +        if expander.get_expanded():
> +            self._main_window.resize(600, 400)
> +        else:
> +            #resize the window back to the default size when
> expander is
> +            #minimized
> +            self._main_window.resize(1, 1)
> +
> +    def on_main_window_deleted(self, *args):
> +        self._response = MAIN_RESPONSE_NONE
> +        self.destroy()
> +        Gtk.main_quit()
>  
>  class MessageWindow(AbstractMessageWindow):
>      def __init__(self, title, text, *args, **kwargs):
>          AbstractMessageWindow.__init__(self, title, text, *args,
>          **kwargs)
> -        self.dialog = gtk.MessageDialog(buttons=gtk.BUTTONS_OK,
> -                                        type=gtk.MESSAGE_INFO,
> +        self.dialog = Gtk.MessageDialog(buttons=Gtk.ButtonsType.OK,
> +                                        type=Gtk.MessageType.INFO,
>                                          message_format=text)
>          self.dialog.set_title(title)
> -        self.dialog.set_position(gtk.WIN_POS_CENTER)
> +        self.dialog.set_position(Gtk.WindowPosition.CENTER)
>  
>      def destroy(self, *args, **kwargs):
>          self.dialog.destroy()
> @@ -162,9 +145,9 @@ class MessageWindow(AbstractMessageWindow):
>  
>  class ExitWindow(MessageWindow):
>      def __init__(self, title, text, *args, **kwargs):
> -        self.dialog = gtk.MessageDialog(buttons=gtk.BUTTONS_NONE,
> -                                        type=gtk.MESSAGE_INFO,
> +        self.dialog =
> Gtk.MessageDialog(buttons=Gtk.ButtonsType.NONE,
> +                                        type=Gtk.MessageType.INFO,
>                                          message_format=text)
>          self.dialog.set_title(title)
>          self.dialog.add_button(_("_Exit"), 0)
> -        self.dialog.set_position(gtk.WIN_POS_CENTER)
> +        self.dialog.set_position(Gtk.WindowPosition.CENTER)
> diff --git a/meh/ui/text.py b/meh/ui/text.py
> index 5dd6fe1..717212e 100644
> --- a/meh/ui/text.py
> +++ b/meh/ui/text.py
> @@ -85,7 +85,7 @@ class
> MainExceptionWindow(AbstractMainExceptionWindow):
>          elif response == string.lower(_("Save")):
>              return MAIN_RESPONSE_SAVE
>          else:
> -            return MAIN_RESPONSE_OK
> +            return MAIN_RESPONSE_QUIT
>  
>  class MessageWindow(AbstractMessageWindow):
>      def __init__(self, title, text, *args, **kwargs):
> diff --git a/po/python-meh.pot b/po/python-meh.pot
> index b291941..ab22b61 100644
> --- a/po/python-meh.pot
> +++ b/po/python-meh.pot
> @@ -8,7 +8,7 @@ msgid ""
>  msgstr ""
>  "Project-Id-Version: PACKAGE VERSION\n"
>  "Report-Msgid-Bugs-To: \n"
> -"POT-Creation-Date: 2010-04-14 10:26+0200\n"
> +"POT-Creation-Date: 2012-07-09 14:33+0200\n"
>  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
>  "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
>  "Language-Team: LANGUAGE <LL at li.org>\n"
> @@ -17,45 +17,68 @@ msgstr ""
>  "Content-Type: text/plain; charset=CHARSET\n"
>  "Content-Transfer-Encoding: 8bit\n"
>  
> -#: ../meh/ui/text.py:73 ../meh/ui/text.py:100
> +#: ../meh/ui/text.py:73 ../meh/ui/text.py:99
>  msgid "OK"
>  msgstr ""
>  
> -#: ../meh/ui/text.py:73 ../meh/ui/text.py:82
> +#: ../meh/ui/text.py:73 ../meh/ui/text.py:85
>  msgid "Save"
>  msgstr ""
>  
> -#: ../meh/ui/text.py:73 ../meh/ui/text.py:80
> +#: ../meh/ui/text.py:73 ../meh/ui/text.py:83
>  msgid "Debug"
>  msgstr ""
>  
> -#: ../meh/ui/text.py:88
> +#: ../meh/ui/text.py:80
>  msgid "Exception Occurred"
>  msgstr ""
>  
> -#: ../meh/ui/text.py:114
> +#: ../meh/ui/text.py:113
>  msgid "Exit"
>  msgstr ""
>  
> -#. Set the buttons.
> -#: ../meh/ui/gui.py:101
> -msgid "Debu_g"
> +#: ../meh/ui/gui.py:150
> +msgid "_Exit"
>  msgstr ""
>  
> -#: ../meh/ui/gui.py:103 ../meh/ui/gui.py:169
> -msgid "_Exit"
> +#: tmp/exception-dialog.glade.h:1 tmp/exception-dialog-new.glade.h:1
> +msgid "'Debug' will take you to tty1. Press Ctrl + Alt + F6 to
> return."
> +msgstr ""
> +
> +#: tmp/exception-dialog.glade.h:2 tmp/exception-dialog-new.glade.h:2
> +msgid "An unknown error has occured"
> +msgstr ""
> +
> +#: tmp/exception-dialog.glade.h:3
> +msgid "More _info..."
> +msgstr ""
> +
> +#: tmp/exception-dialog.glade.h:4 tmp/exception-dialog-new.glade.h:4
> +msgid "No additional info available."
> +msgstr ""
> +
> +#: tmp/exception-dialog.glade.h:5 tmp/exception-dialog-new.glade.h:5
> +msgid "The output below may help determine the cause of the error:"
>  msgstr ""
>  
> -#: ../meh/ui/gui.py:108
> +#: tmp/exception-dialog.glade.h:6 tmp/exception-dialog-new.glade.h:6
>  msgid ""
> -"An unhandled exception has occurred.  This is most likely a bug.
>  Please "
> -"save a copy of the detailed exception and file a bug report."
> +"This program has encountered an unknown error. You may\n"
> +"report the bug bellow or quit the program."
> +msgstr ""
> +
> +#: tmp/exception-dialog.glade.h:8 tmp/exception-dialog-new.glade.h:8
> +msgid "_Debug"
> +msgstr ""
> +
> +#: tmp/exception-dialog.glade.h:9 tmp/exception-dialog-new.glade.h:9
> +msgid "_Quit"
>  msgstr ""
>  
> -#: tmp/detailed-dialog.glade.h:1
> -msgid "Info"
> +#: tmp/exception-dialog.glade.h:10
> tmp/exception-dialog-new.glade.h:10
> +msgid "_Report Bug"
>  msgstr ""
>  
> -#: tmp/detailed-dialog.glade.h:2
> -msgid "_Details"
> +#: tmp/exception-dialog-new.glade.h:3
> +msgid "More info..."
>  msgstr ""
> diff --git a/setup.py b/setup.py
> index ab48424..5d5628f 100644
> --- a/setup.py
> +++ b/setup.py
> @@ -6,5 +6,5 @@ setup(name='python-meh', version='0.13',
>        description='Python module for handling exceptions',
>        author='Chris Lumens', author_email='clumens at redhat.com',
>        url='http://git.fedoraproject.org/git/?p=python-meh.git',
> -      data_files = [('/usr/share/python-meh',
> ['ui/detailed-dialog.glade', 'pixmaps/exception.png'])],
> +      data_files = [('/usr/share/python-meh',
> ['ui/exception-dialog.glade'])],
>        packages=['meh', 'meh.ui'])
> diff --git a/ui/detailed-dialog.glade b/ui/detailed-dialog.glade
> deleted file mode 100644
> index 61fca36..0000000
> --- a/ui/detailed-dialog.glade
> +++ /dev/null
> @@ -1,171 +0,0 @@
> -<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
> -<!DOCTYPE glade-interface SYSTEM
> "http://glade.gnome.org/glade-2.0.dtd">
> -
> -<glade-interface>
> -
> -<widget class="GtkDialog" id="detailedDialog">
> -  <property name="visible">True</property>
> -  <property name="title">Exception Occurred</property>
> -  <property name="type">GTK_WINDOW_TOPLEVEL</property>
> -  <property name="window_position">GTK_WIN_POS_CENTER</property>
> -  <property name="modal">True</property>
> -  <property name="default_width">550</property>
> -  <property name="default_height">400</property>
> -  <property name="resizable">True</property>
> -  <property name="destroy_with_parent">False</property>
> -  <property name="decorated">True</property>
> -  <property name="skip_taskbar_hint">False</property>
> -  <property name="skip_pager_hint">False</property>
> -  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
> -  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
> -  <property name="focus_on_map">True</property>
> -  <property name="urgency_hint">False</property>
> -  <property name="has_separator">True</property>
> -
> -  <child internal-child="vbox">
> -    <widget class="GtkVBox" id="detailedDialog-vbox">
> -      <property name="visible">True</property>
> -      <property name="homogeneous">False</property>
> -      <property name="spacing">12</property>
> -
> -      <child internal-child="action_area">
> -	<widget class="GtkHButtonBox" id="buttonBox">
> -	  <property name="visible">True</property>
> -	  <property name="layout_style">GTK_BUTTONBOX_END</property>
> -	</widget>
> -	<packing>
> -	  <property name="padding">0</property>
> -	  <property name="expand">False</property>
> -	  <property name="fill">True</property>
> -	  <property name="pack_type">GTK_PACK_END</property>
> -	</packing>
> -      </child>
> -
> -      <child>
> -	<widget class="GtkVBox" id="mainVBox">
> -	  <property name="visible">True</property>
> -	  <property name="homogeneous">False</property>
> -	  <property name="spacing">12</property>
> -
> -	  <child>
> -	    <widget class="GtkHBox" id="hbox1">
> -	      <property name="visible">True</property>
> -	      <property name="homogeneous">False</property>
> -	      <property name="spacing">6</property>
> -
> -	      <child>
> -		<placeholder/>
> -	      </child>
> -
> -	      <child>
> -		<widget class="GtkLabel" id="info">
> -		  <property name="visible">True</property>
> -		  <property name="label" translatable="yes">Info</property>
> -		  <property name="use_underline">False</property>
> -		  <property name="use_markup">False</property>
> -		  <property name="justify">GTK_JUSTIFY_LEFT</property>
> -		  <property name="wrap">True</property>
> -		  <property name="selectable">False</property>
> -		  <property name="xalign">0</property>
> -		  <property name="yalign">0.5</property>
> -		  <property name="xpad">0</property>
> -		  <property name="ypad">0</property>
> -		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
> -		  <property name="width_chars">-1</property>
> -		  <property name="single_line_mode">False</property>
> -		  <property name="angle">0</property>
> -		</widget>
> -		<packing>
> -		  <property name="padding">0</property>
> -		  <property name="expand">True</property>
> -		  <property name="fill">True</property>
> -		</packing>
> -	      </child>
> -	    </widget>
> -	    <packing>
> -	      <property name="padding">0</property>
> -	      <property name="expand">False</property>
> -	      <property name="fill">False</property>
> -	    </packing>
> -	  </child>
> -
> -	  <child>
> -	    <widget class="GtkExpander" id="detailedExpander">
> -	      <property name="visible">True</property>
> -	      <property name="can_focus">True</property>
> -	      <property name="expanded">False</property>
> -	      <property name="spacing">0</property>
> -
> -	      <child>
> -		<widget class="GtkScrolledWindow" id="scrolledwindow2">
> -		  <property name="visible">True</property>
> -		  <property name="can_focus">True</property>
> -		  <property
> name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
> -		  <property
> name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
> -		  <property name="shadow_type">GTK_SHADOW_IN</property>
> -		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
> -
> -		  <child>
> -		    <widget class="GtkTextView" id="detailedView">
> -		      <property name="visible">True</property>
> -		      <property name="can_focus">True</property>
> -		      <property name="editable">False</property>
> -		      <property name="overwrite">False</property>
> -		      <property name="accepts_tab">True</property>
> -		      <property name="justification">GTK_JUSTIFY_LEFT</property>
> -		      <property name="wrap_mode">GTK_WRAP_NONE</property>
> -		      <property name="cursor_visible">False</property>
> -		      <property name="pixels_above_lines">0</property>
> -		      <property name="pixels_below_lines">0</property>
> -		      <property name="pixels_inside_wrap">0</property>
> -		      <property name="left_margin">0</property>
> -		      <property name="right_margin">0</property>
> -		      <property name="indent">0</property>
> -		      <property name="text" translatable="yes"></property>
> -		    </widget>
> -		  </child>
> -		</widget>
> -	      </child>
> -
> -	      <child>
> -		<widget class="GtkLabel" id="label1">
> -		  <property name="visible">True</property>
> -		  <property name="label" translatable="yes">_Details</property>
> -		  <property name="use_underline">True</property>
> -		  <property name="use_markup">False</property>
> -		  <property name="justify">GTK_JUSTIFY_LEFT</property>
> -		  <property name="wrap">False</property>
> -		  <property name="selectable">False</property>
> -		  <property name="xalign">0.5</property>
> -		  <property name="yalign">0.5</property>
> -		  <property name="xpad">0</property>
> -		  <property name="ypad">0</property>
> -		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
> -		  <property name="width_chars">-1</property>
> -		  <property name="single_line_mode">False</property>
> -		  <property name="angle">0</property>
> -		</widget>
> -		<packing>
> -		  <property name="type">label_item</property>
> -		</packing>
> -	      </child>
> -	    </widget>
> -	    <packing>
> -	      <property name="padding">0</property>
> -	      <property name="expand">True</property>
> -	      <property name="fill">True</property>
> -	      <property name="pack_type">GTK_PACK_END</property>
> -	    </packing>
> -	  </child>
> -	</widget>
> -	<packing>
> -	  <property name="padding">0</property>
> -	  <property name="expand">True</property>
> -	  <property name="fill">True</property>
> -	</packing>
> -      </child>
> -    </widget>
> -  </child>
> -</widget>
> -
> -</glade-interface>
> diff --git a/ui/exception-dialog.glade b/ui/exception-dialog.glade
> new file mode 100644
> index 0000000..89b62c2
> --- /dev/null
> +++ b/ui/exception-dialog.glade
> @@ -0,0 +1,248 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<interface>
> +  <!-- interface-requires gtk+ 3.0 -->
> +  <object class="GtkWindow" id="exceptionWindow">
> +    <property name="can_focus">False</property>
> +    <property name="window_position">center</property>
> +    <signal name="delete-event" handler="on_main_window_deleted"
> swapped="no"/>
> +    <child>
> +      <object class="GtkBox" id="mainBox">
> +        <property name="visible">True</property>
> +        <property name="can_focus">False</property>
> +        <property name="orientation">vertical</property>
> +        <child>
> +          <object class="GtkBox" id="box1">
> +            <property name="visible">True</property>
> +            <property name="can_focus">False</property>
> +            <property name="halign">start</property>
> +            <property name="valign">center</property>
> +            <property name="margin_left">20</property>
> +            <property name="margin_top">30</property>
> +            <child>
> +              <object class="GtkImage" id="image1">
> +                <property name="visible">True</property>
> +                <property name="can_focus">False</property>
> +                <property name="stock">gtk-dialog-warning</property>
> +                <property name="icon-size">5</property>
> +              </object>
> +              <packing>
> +                <property name="expand">False</property>
> +                <property name="fill">True</property>
> +                <property name="padding">7</property>
> +                <property name="position">0</property>
> +              </packing>
> +            </child>
> +            <child>
> +              <object class="GtkLabel" id="titleLabel">
> +                <property name="visible">True</property>
> +                <property name="can_focus">False</property>
> +                <property name="label" translatable="yes">An unknown
> error has occured</property>
> +                <attributes>
> +                  <attribute name="weight" value="bold"/>
> +                  <attribute name="scale"
> value="1.1000000000000001"/>
> +                </attributes>
> +              </object>
> +              <packing>
> +                <property name="expand">False</property>
> +                <property name="fill">True</property>
> +                <property name="position">1</property>
> +              </packing>
> +            </child>
> +          </object>
> +          <packing>
> +            <property name="expand">False</property>
> +            <property name="fill">False</property>
> +            <property name="position">0</property>
> +          </packing>
> +        </child>
> +        <child>
> +          <object class="GtkLabel" id="explainLabel">
> +            <property name="visible">True</property>
> +            <property name="can_focus">False</property>
> +            <property name="halign">start</property>
> +            <property name="valign">start</property>
> +            <property name="margin_left">40</property>
> +            <property name="margin_right">40</property>
> +            <property name="label" translatable="yes">This program
> has encountered an unknown error. You may
> +report the bug bellow or quit the program.</property>
> +          </object>
> +          <packing>
> +            <property name="expand">False</property>
> +            <property name="fill">True</property>
> +            <property name="padding">21</property>
> +            <property name="position">1</property>
> +          </packing>
> +        </child>
> +        <child>
> +          <object class="GtkButtonBox" id="buttonbox1">
> +            <property name="visible">True</property>
> +            <property name="can_focus">False</property>
> +            <property name="valign">start</property>
> +            <property name="margin_right">20</property>
> +            <property name="spacing">10</property>
> +            <property name="layout_style">end</property>
> +            <child>
> +              <object class="GtkButton" id="reportButton">
> +                <property name="label" translatable="yes">_Report
> Bug</property>
> +                <property name="visible">True</property>
> +                <property name="can_focus">True</property>
> +                <property name="receives_default">True</property>
> +                <property
> name="use_action_appearance">False</property>
> +                <property name="use_underline">True</property>
> +                <signal name="clicked" handler="on_report_clicked"
> swapped="no"/>
> +              </object>
> +              <packing>
> +                <property name="expand">False</property>
> +                <property name="fill">True</property>
> +                <property name="position">0</property>
> +              </packing>
> +            </child>
> +            <child>
> +              <object class="GtkButton" id="quitButton">
> +                <property name="label"
> translatable="yes">_Quit</property>
> +                <property name="visible">True</property>
> +                <property name="can_focus">True</property>
> +                <property name="receives_default">True</property>
> +                <property
> name="use_action_appearance">False</property>
> +                <property name="use_underline">True</property>
> +                <signal name="clicked" handler="on_quit_clicked"
> swapped="no"/>
> +              </object>
> +              <packing>
> +                <property name="expand">False</property>
> +                <property name="fill">True</property>
> +                <property name="position">1</property>
> +              </packing>
> +            </child>
> +          </object>
> +          <packing>
> +            <property name="expand">False</property>
> +            <property name="fill">True</property>
> +            <property name="position">2</property>
> +          </packing>
> +        </child>
> +        <child>
> +          <object class="GtkExpander" id="expander">
> +            <property name="visible">True</property>
> +            <property name="can_focus">True</property>
> +            <property name="margin_left">10</property>
> +            <property name="margin_right">10</property>
> +            <property name="margin_bottom">10</property>
> +            <property name="use_underline">True</property>
> +            <signal name="activate" handler="on_expander_activated"
> swapped="no"/>
> +            <child>
> +              <object class="GtkBox" id="box2">
> +                <property name="visible">True</property>
> +                <property name="can_focus">False</property>
> +                <property name="vexpand">True</property>
> +                <property name="orientation">vertical</property>
> +                <property name="spacing">6</property>
> +                <child>
> +                  <object class="GtkLabel" id="commentLabel">
> +                    <property name="visible">True</property>
> +                    <property name="can_focus">False</property>
> +                    <property name="halign">start</property>
> +                    <property name="margin_left">2</property>
> +                    <property
> name="xalign">0.10000000149011612</property>
> +                    <property name="label" translatable="yes">The
> output below may help determine the cause of the error:</property>
> +                    <attributes>
> +                      <attribute name="style" value="italic"/>
> +                    </attributes>
> +                  </object>
> +                  <packing>
> +                    <property name="expand">False</property>
> +                    <property name="fill">True</property>
> +                    <property name="position">0</property>
> +                  </packing>
> +                </child>
> +                <child>
> +                  <object class="GtkScrolledWindow"
> id="tracebackScrolledWindow">
> +                    <property name="visible">True</property>
> +                    <property name="can_focus">True</property>
> +                    <property name="vexpand">True</property>
> +                    <property name="shadow_type">in</property>
> +                    <child>
> +                      <object class="GtkTextView"
> id="tracebackView">
> +                        <property name="visible">True</property>
> +                        <property name="can_focus">True</property>
> +                        <property
> name="vscroll_policy">natural</property>
> +                        <property name="editable">False</property>
> +                        <property
> name="cursor_visible">False</property>
> +                        <property
> name="buffer">tracebackBuffer</property>
> +                      </object>
> +                    </child>
> +                  </object>
> +                  <packing>
> +                    <property name="expand">True</property>
> +                    <property name="fill">True</property>
> +                    <property name="position">1</property>
> +                  </packing>
> +                </child>
> +                <child>
> +                  <object class="GtkBox" id="bottomBox">
> +                    <property name="visible">True</property>
> +                    <property name="can_focus">False</property>
> +                    <property name="spacing">4</property>
> +                    <child>
> +                      <object class="GtkLabel" id="warningLabel">
> +                        <property name="visible">True</property>
> +                        <property name="can_focus">False</property>
> +                        <property
> name="xalign">0.89999997615814209</property>
> +                        <property name="label"
> translatable="yes">'Debug' will take you to tty1. Press Ctrl + Alt +
> F6 to return.</property>
> +                        <attributes>
> +                          <attribute name="style" value="italic"/>
> +                          <attribute name="scale"
> value="0.80000000000000004"/>
> +                        </attributes>
> +                      </object>
> +                      <packing>
> +                        <property name="expand">True</property>
> +                        <property name="fill">True</property>
> +                        <property name="position">0</property>
> +                      </packing>
> +                    </child>
> +                    <child>
> +                      <object class="GtkButton" id="debugButton">
> +                        <property name="label"
> translatable="yes">_Debug</property>
> +                        <property name="visible">True</property>
> +                        <property name="can_focus">True</property>
> +                        <property
> name="receives_default">True</property>
> +                        <property
> name="use_action_appearance">False</property>
> +                        <property
> name="use_underline">True</property>
> +                        <signal name="clicked"
> handler="on_debug_clicked" swapped="no"/>
> +                      </object>
> +                      <packing>
> +                        <property name="expand">False</property>
> +                        <property name="fill">True</property>
> +                        <property name="position">1</property>
> +                      </packing>
> +                    </child>
> +                  </object>
> +                  <packing>
> +                    <property name="expand">False</property>
> +                    <property name="fill">True</property>
> +                    <property name="position">2</property>
> +                  </packing>
> +                </child>
> +              </object>
> +            </child>
> +            <child type="label">
> +              <object class="GtkLabel" id="expanderLabel">
> +                <property name="visible">True</property>
> +                <property name="can_focus">False</property>
> +                <property name="label" translatable="yes">More
> _info...</property>
> +                <property name="use_underline">True</property>
> +              </object>
> +            </child>
> +          </object>
> +          <packing>
> +            <property name="expand">False</property>
> +            <property name="fill">True</property>
> +            <property name="position">3</property>
> +          </packing>
> +        </child>
> +      </object>
> +    </child>
> +  </object>
> +  <object class="GtkTextBuffer" id="tracebackBuffer">
> +    <property name="text" translatable="yes">No additional info
> available.</property>
> +  </object>
> +</interface>
> --
> 1.7.4.4
> 
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://fedorahosted.org/mailman/listinfo/anaconda-patches
> 


More information about the anaconda-patches mailing list