Also, move the gtk-specific UI code out of ExceptionHandler.runSave and into the saveExceptionWindow method. This allows doing the same thing for the newt UI, too. --- meh/__init__.py | 8 - meh/handler.py | 17 +- meh/ui/__init__.py | 30 +--- meh/ui/gui.py | 76 ++----- meh/ui/text.py | 150 ++----------- setup.py | 3 +- ui/exnSave.glade | 641 ---------------------------------------------------- 7 files changed, 46 insertions(+), 879 deletions(-) delete mode 100644 ui/exnSave.glade diff --git a/meh/__init__.py b/meh/__init__.py index 185a528..22c7959 100644 --- a/meh/__init__.py +++ b/meh/__init__.py @@ -54,10 +54,6 @@ class Config(object): with the name "anaconda" and you want to skip anaconda.id.rootPassword, "id.rootPassword" should be listed in attrSkipList. - bugFiler -- An AbstractFiler instance. This is required for - saving to remote bug tracking systems. Of course - this must be an instance of a real subclass, not - of the abstract thing itself. fileList -- A list of files to find on the system and add to the traceback dump. localSkipList -- A list of strings. When handling a traceback, @@ -72,15 +68,11 @@ class Config(object): set. """ self.attrSkipList = [] - self.bugFiler = None - self.bugDisplayUrl = None self.fileList = [] self.localSkipList = [] self.programName = None self.programVersion = None - self._intf = None - # Override the defaults set above with whatever's passed in as an # argument. Unknown arguments get thrown away. for (key, val) in kwargs.iteritems(): diff --git a/meh/handler.py b/meh/handler.py index cd00c47..1ed1fc1 100644 --- a/meh/handler.py +++ b/meh/handler.py @@ -23,7 +23,6 @@ from network import hasActiveNetDev import signal import sys import report.accountmanager -import report.io.GTKIO import gettext _ = lambda x: gettext.ldgettext("python-meh", x) @@ -46,7 +45,7 @@ class ExceptionHandler(object): exnClass -- An instance of ExceptionDump or a subclass of it. This is required to know how to represent the Python exception internally. - intf -- An instance of AbstractIntf. This is required to know + intfClass-- An instance of AbstractIntf. This is required to know what UI classes to use. """ self.conf = confObj @@ -56,8 +55,6 @@ class ExceptionHandler(object): self._exitcode = 10 self._exn = None - self.conf._intf = self.intf - def _setExitCode(self, code): self._exitcode = code @@ -205,12 +202,10 @@ class ExceptionHandler(object): accountManager = report.accountmanager.AccountManager() signature = report.createPythonUnhandledExceptionSignature( \ - self.conf.programName, - self.conf.programName, self.exn.hash, + self.conf.programName, + self.conf.programName, self.exn.hash, summary, description, exnFileName) - # Don't need to check the return value of report.report as it handles - # all the UI for us. Also we don't want to automatically quit since - # the user may wish to save somewhere else, debug, etc. - io = report.io.GTKIO.GTKIO(accountManager) - report.report(signature, io) + # We don't want to automatically quit here since the user may wish to + # save somewhere else, debug, etc. + self.intf.saveExceptionWindow(accountManager, signature) diff --git a/meh/ui/__init__.py b/meh/ui/__init__.py index 2adc71f..e0bf0ed 100644 --- a/meh/ui/__init__.py +++ b/meh/ui/__init__.py @@ -171,39 +171,13 @@ class AbstractSaveExceptionWindow: initial dialog, and presents multiple options for how the traceback should be saved. """ - def __init__(self, exnFile, desc="", *args, **kwargs): + def __init__(self, *args, **kwargs): """Create a new SaveExceptionWindow instance. This must handle creating the dialog and populating it with widgets, but must not run the dialog. A self.dialog attribute should be created that refers to the dialog itself. - - exnFile -- A file containing the output of ExceptionDump.write(). - desc -- A description to populate the text entry field with, - since users often do not know what to do. - """ - self.rc = 0 - - def destroy(self, *args, **kwargs): - """Destroy the current dialog. This method must be provided by all - subclasses. """ - raise NotImplementedError - - def getrc(self, *args, **kwargs): - """Return which button was clicked on the interface. Unfortunately, - this does not tell you which method the user selected for saving - the traceback. This method must be provided by all subclasses. - """ - return self.rc - - def getDest(self, *args, **kwargs): - """Return a (number, destInfo) tuple corresponding to which method was - selected for saving the traceback. The number is the entry in the - UI, for deciding which method to call. The destInfo is usually - some tuple containing the text out of the UI elements and should - be passed to the saving methods. - """ - raise NotImplementedError + pass def run(self, *args, **kwargs): """Run the window and set a return value. This method does everything diff --git a/meh/ui/gui.py b/meh/ui/gui.py index 834cc8f..dc6b9e4 100644 --- a/meh/ui/gui.py +++ b/meh/ui/gui.py @@ -21,6 +21,7 @@ from meh.ui import * import gtk import gtk.glade import os +import report import gettext _ = lambda x: gettext.ldgettext("python-meh", x) @@ -59,9 +60,23 @@ class GraphicalIntf(AbstractIntf): win.run() win.destroy() - def saveExceptionWindow(self, exnFile, desc="", *args, **kwargs): - win = SaveExceptionWindow(exnFile, desc=desc, *args, **kwargs) - return win + def saveExceptionWindow(self, accountManager, signature, *args, **kwargs): + win = SaveExceptionWindow(accountManager, signature) + win.run() + +class SaveExceptionWindow(AbstractSaveExceptionWindow): + def __init__(self, accountManager, signature, *args, **kwargs): + import report.io.GTKIO + + self.accountManager = accountManager + self.signature = signature + + self.io = report.io.GTKIO.GTKIO(self.accountManager) + + def run(self, *args, **kwargs): + # Don't need to check the return value of report since it will + # handle all the UI reporting for us. + report.report(self.signature, self.io) class MainExceptionWindow(AbstractMainExceptionWindow): def __init__(self, shortTraceback=None, longTracebackFile=None, *args, **kwargs): @@ -153,58 +168,3 @@ class ExitWindow(MessageWindow): self.dialog.set_title(title) self.dialog.add_button(_("_Exit"), 0) self.dialog.set_position(gtk.WIN_POS_CENTER) - -class SaveExceptionWindow(AbstractSaveExceptionWindow): - def __init__(self, exnFile, desc="", *args, **kwargs): - AbstractSaveExceptionWindow.__init__(self, exnFile, desc=desc, *args, **kwargs) - exnxml = gtk.glade.XML(findGladeFile("exnSave.glade"), domain="python-meh") - - self.bugzillaNameEntry = exnxml.get_widget("bugzillaNameEntry") - self.bugzillaPasswordEntry = exnxml.get_widget("bugzillaPasswordEntry") - self.bugDesc = exnxml.get_widget("bugDesc") - - self.bugDesc.set_text(desc) - - self.scpNameEntry = exnxml.get_widget("scpNameEntry") - self.scpPasswordEntry = exnxml.get_widget("scpPasswordEntry") - self.scpHostEntry = exnxml.get_widget("scpHostEntry") - self.scpDestEntry = exnxml.get_widget("scpDestEntry") - - self.notebook = exnxml.get_widget("destNotebook") - self.destCombo = exnxml.get_widget("destCombo") - - self.localChooser = exnxml.get_widget("localChooser") - self.dialog = exnxml.get_widget("saveDialog") - - self.destCombo.connect("changed", self._combo_changed) - self.destCombo.set_active(0) - self.notebook.set_current_page(0) - - def _combo_changed(self, args): - self.notebook.set_current_page(self.destCombo.get_active()) - - def destroy(self, *args, **kwargs): - self.dialog.destroy() - - def getDest(self, *args, **kwargs): - if self.notebook.get_current_page() == 0: - return (0, self.localChooser.get_filename()) - elif self.notebook.get_current_page() == 1: - return (1, map(lambda e: e.get_text(), [self.bugzillaNameEntry, - self.bugzillaPasswordEntry, - self.bugDesc])) - elif self.notebook.get_current_page() == 2: - return (2, map(lambda e: e.get_text(), [self.scpNameEntry, - self.scpPasswordEntry, - self.scpHostEntry, - self.scpDestEntry])) - - def getrc(self, *args, **kwargs): - if self.rc == gtk.RESPONSE_OK: - return SAVE_RESPONSE_OK - elif self.rc == gtk.RESPONSE_CANCEL: - return SAVE_RESPONSE_CANCEL - - def run(self, *args, **kwargs): - self.dialog.show_all() - self.rc = self.dialog.run() diff --git a/meh/ui/text.py b/meh/ui/text.py index d7dafed..1750dac 100644 --- a/meh/ui/text.py +++ b/meh/ui/text.py @@ -18,6 +18,7 @@ # from meh import * from meh.ui import * +import report from snack import * import gettext @@ -41,9 +42,24 @@ class TextIntf(AbstractIntf): win.run() win.destroy() - def saveExceptionWindow(self, exnFile, desc="", *args, **kwargs): - win = SaveExceptionWindow(exnFile, desc=desc, *args, **kwargs) - return win + def saveExceptionWindow(self, accountManager, signature, *args, **kwargs): + win = SaveExceptionWindow(accountManager, signature) + win.run() + +class SaveExceptionWindow(AbstractSaveExceptionWindow): + def __init__(self, accountManager, signature, *args, **kwargs): + import report.io.NewtIO + + self.accountManager = accountManager + self.signature = signature + self.screen = kwargs.get("screen") + + self.io = report.io.NewtIO.NewtIO(self.screen) + + def run(self, *args, **kwargs): + # Don't need to check the return value of report since it will + # handle all the UI reporting for us. + report.report(self.signature, self.io) class MainExceptionWindow(AbstractMainExceptionWindow): def __init__(self, shortTraceback=None, longTracebackFile=None, *args, **kwargs): @@ -99,131 +115,3 @@ class ExitWindow(MessageWindow): def destroy(self, *args, **kwargs): self.screen.popWindow() self.screen.refresh() - -class SaveExceptionWindow(AbstractSaveExceptionWindow): - def __init__(self, exnFile, desc="", *args, **kwargs): - AbstractSaveExceptionWindow.__init__(self, exnFile, desc=desc, *args, **kwargs) - self.screen = kwargs.get("screen", None) - self._desc = desc - self._method = "disk" - - def _runSaveToDisk(self): - toplevel = GridForm(self.screen, _("Save to disk"), 1, 2) - - buttons = ButtonBar(self.screen, [_("OK"), _("Cancel")]) - self.dirEntry = Entry(24) - - entryGrid = Grid(2, 2) - entryGrid.setField(Label(_("Directory")), 0, 0, anchorLeft=1) - entryGrid.setField(self.dirEntry, 1, 0) - - toplevel.add(entryGrid, 0, 0, (0, 0, 0, 1)) - toplevel.add(buttons, 0, 1, growx=1) - - result = toplevel.run() - return buttons.buttonPressed(result) - - def _runSaveToBugzilla(self): - toplevel = GridForm(self.screen, _("Save to bugzilla"), 1, 2) - - buttons = ButtonBar(self.screen, [_("OK"), _("Cancel")]) - self.bugzillaNameEntry = Entry(24) - self.bugzillaPasswordEntry = Entry(24, password=1) - self.bugDesc = Entry(24) - - self.bugDesc.set(self._desc) - - bugzillaGrid = Grid(2, 3) - bugzillaGrid.setField(Label(_("Username")), 0, 0, anchorLeft=1) - bugzillaGrid.setField(self.bugzillaNameEntry, 1, 0) - bugzillaGrid.setField(Label(_("Password")), 0, 1, anchorLeft=1) - bugzillaGrid.setField(self.bugzillaPasswordEntry, 1, 1) - bugzillaGrid.setField(Label(_("Bug Description")), 0, 2, anchorLeft=1) - bugzillaGrid.setField(self.bugDesc, 1, 2) - - toplevel.add(bugzillaGrid, 0, 0, (0, 0, 0, 1)) - toplevel.add(buttons, 0, 1, growx=1) - - result = toplevel.run() - return buttons.buttonPressed(result) - - def _runSaveToRemote(self): - toplevel = GridForm(self.screen, _("Send to remote server (scp)"), 1, 2) - - buttons = ButtonBar(self.screen, [_("OK"), _("Cancel")]) - self.scpNameEntry = Entry(24) - self.scpPasswordEntry = Entry(24, password=1) - self.scpHostEntry = Entry(24) - self.scpDestEntry = Entry(24) - - scpGrid = Grid(2, 4) - scpGrid.setField(Label(_("User name")), 0, 0, anchorLeft=1) - scpGrid.setField(self.scpNameEntry, 1, 0) - scpGrid.setField(Label(_("Password")), 0, 1, anchorLeft=1) - scpGrid.setField(self.scpPasswordEntry, 1, 1) - scpGrid.setField(Label(_("Host (host:port)")), 0, 2, anchorLeft=1) - scpGrid.setField(self.scpHostEntry, 1, 2) - scpGrid.setField(Label(_("Destination file")), 0, 3, anchorLeft=1) - scpGrid.setField(self.scpDestEntry, 1, 3) - - toplevel.add(scpGrid, 0, 0, (0, 0, 0, 1)) - toplevel.add(buttons, 0, 1, growx=1) - - result = toplevel.run() - return buttons.buttonPressed(result) - - def destroy(self, *args, **kwargs): - self.screen.popWindow() - self.screen.refresh() - - def run(self, *args, **kwargs): - mapping = {"disk": self._runSaveToDisk, - "bugzilla": self._runSaveToBugzilla, - "scp": self._runSaveToRemote} - - toplevel = GridForm(self.screen, _("Save"), 1, 4) - - self.rg = RadioGroup() - self.diskButton = self.rg.add(_("Save to local"), "disk", True) - self.bugzillaButton = self.rg.add(_("Save to bugzilla"), "bugzilla", False) - self.scpButton = self.rg.add(_("Save to remote server (scp)"), "scp", False) - - buttons = ButtonBar(self.screen, [_("OK"), _("Cancel")]) - - toplevel.add(self.diskButton, 0, 0, (0, 0, 0, 1)) - toplevel.add(self.bugzillaButton, 0, 1, (0, 0, 0, 1)) - toplevel.add(self.scpButton, 0, 2, (0, 0, 0, 1)) - toplevel.add(buttons, 0, 3, growx=1) - - while True: - result = toplevel.run() - rc = buttons.buttonPressed(result) - - if rc == string.lower(_("OK")): - if mapping[self.rg.getSelection()]() == string.lower(_("Cancel")): - self.destroy() - continue - - self.rc = SAVE_RESPONSE_OK - self._method = self.rg.getSelection() - self.destroy() - else: - self.rc = SAVE_RESPONSE_CANCEL - - break - - def getrc(self, *args, **kwargs): - return self.rc - - def getDest(self, *args, **kwargs): - if self._method == "disk": - return (0, self.dirEntry.value()) - elif self._method == "bugzilla": - return (1, map(lambda e: e.value(), [self.bugzillaNameEntry, - self.bugzillaPasswordEntry, - self.bugDesc])) - elif self._method == "scp": - return (2, map(lambda e: e.value(), [self.scpNameEntry, - self.scpPasswordEntry, - self.scpHostEntry, - self.scpDestEntry])) diff --git a/setup.py b/setup.py index f3183a1..25ee58f 100644 --- a/setup.py +++ b/setup.py @@ -6,6 +6,5 @@ setup(name='python-meh', version='0.7', description='Python module for handling exceptions', author='Chris Lumens', author_email='clumens@xxxxxxxxxx', url='http://git.fedoraproject.org/git/?p=python-meh.git', - data_files = [('/usr/share/python-meh', ['ui/detailed-dialog.glade', 'ui/exnSave.glade', - 'pixmaps/exception.png'])], + data_files = [('/usr/share/python-meh', ['ui/detailed-dialog.glade', 'pixmaps/exception.png'])], packages=['meh', 'meh.ui']) diff --git a/ui/exnSave.glade b/ui/exnSave.glade deleted file mode 100644 index 190b63f..0000000 --- a/ui/exnSave.glade +++ /dev/null @@ -1,641 +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="saveDialog"> - <property name="visible">True</property> - <property name="title" translatable="yes">Save</property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> - <property name="window_position">GTK_WIN_POS_CENTER</property> - <property name="modal">True</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="dialog-vbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - - <child> - <widget class="GtkButton" id="cancelbutton1"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-6</property> - </widget> - </child> - - <child> - <widget class="GtkButton" id="okbutton1"> - <property name="visible">True</property> - <property name="can_default">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-ok</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="response_id">-5</property> - </widget> - </child> - </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="vbox1"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkLabel" id="label6"> - <property name="visible">True</property> - <property name="label" translatable="yes">Please choose a destination for saving your traceback.</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</property> - <property name="xpad">0</property> - <property name="ypad">5</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">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkComboBox" id="destCombo"> - <property name="visible">True</property> - <property name="items" translatable="yes">Local storage -Bugzilla -Remote server (scp)</property> - <property name="add_tearoffs">False</property> - <property name="focus_on_click">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkNotebook" id="destNotebook"> - <property name="visible">True</property> - <property name="show_tabs">False</property> - <property name="show_border">False</property> - <property name="tab_pos">GTK_POS_TOP</property> - <property name="scrollable">False</property> - <property name="enable_popup">False</property> - - <child> - <placeholder/> - </child> - - <child> - <widget class="GtkLabel" id="label12"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</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">tab</property> - </packing> - </child> - - <child> - <widget class="GtkFileChooserButton" id="localChooser"> - <property name="visible">True</property> - <property name="title" translatable="yes">Select A File</property> - <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property> - <property name="local_only">True</property> - <property name="show_hidden">False</property> - <property name="do_overwrite_confirmation">False</property> - <property name="width_chars">-1</property> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label14"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</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">tab</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="bugzillaBox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkVBox" id="vbox2"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="label">_User name</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</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">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="label">_Password</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</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">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label7"> - <property name="visible">True</property> - <property name="label" translatable="yes">Bug _description</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="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox3"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkEntry" id="bugzillaNameEntry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="bugzillaPasswordEntry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">False</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="bugDesc"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label16"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</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">tab</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="scpBox"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> - - <child> - <widget class="GtkVBox" id="vbox5"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkLabel" id="label8"> - <property name="visible">True</property> - <property name="label" translatable="yes">_User name</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</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">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label9"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Password</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</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">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label10"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Host (host:port)</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</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">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="label" translatable="yes">Destination _file</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</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">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkVBox" id="vbox6"> - <property name="border_width">5</property> - <property name="visible">True</property> - <property name="homogeneous">True</property> - <property name="spacing">5</property> - - <child> - <widget class="GtkEntry" id="scpNameEntry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="scpPasswordEntry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">False</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="scpHostEntry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkEntry" id="scpDestEntry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">â?¢</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="tab_expand">False</property> - <property name="tab_fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkLabel" id="label18"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</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">tab</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</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> -- 1.6.5.1
_______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list