weld LoginDialog

Change-Id: I8f2af38bff24a0d4dc088eb1150220a8ea0f0fba
Reviewed-on: https://gerrit.libreoffice.org/52730
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/uui/source/iahndl-authentication.cxx b/uui/source/iahndl-authentication.cxx
index a9f0d8d..b9d88b9 100644
--- a/uui/source/iahndl-authentication.cxx
+++ b/uui/source/iahndl-authentication.cxx
@@ -58,7 +58,7 @@ namespace {

void
executeLoginDialog(
    vcl::Window * pParent,
    weld::Window* pParent,
    LoginErrorInfo & rInfo,
    OUString const & rRealm)
{
@@ -82,40 +82,40 @@ executeLoginDialog(
    if (!bCanUseSysCreds)
        nFlags |= LoginFlags::NoUseSysCreds;

    ScopedVclPtrInstance< LoginDialog > xDialog(pParent, nFlags, rInfo.GetServer(), rRealm);
    LoginDialog aDialog(pParent, nFlags, rInfo.GetServer(), rRealm);
    if (!rInfo.GetErrorText().isEmpty())
        xDialog->SetErrorText(rInfo.GetErrorText());
    xDialog->SetName(rInfo.GetUserName());
        aDialog.SetErrorText(rInfo.GetErrorText());
    aDialog.SetName(rInfo.GetUserName());
    if (bAccount)
        xDialog->ClearAccount();
        aDialog.ClearAccount();
    else
        xDialog->ClearPassword();
    xDialog->SetPassword(rInfo.GetPassword());
        aDialog.ClearPassword();
    aDialog.SetPassword(rInfo.GetPassword());

    if (bSavePassword)
    {
        std::locale aLocale(Translate::Create("uui"));
        xDialog->SetSavePasswordText(
        aDialog.SetSavePasswordText(
            Translate::get(rInfo.GetIsRememberPersistent()
                      ? RID_SAVE_PASSWORD
                      : RID_KEEP_PASSWORD,
                  aLocale));

        xDialog->SetSavePassword(rInfo.GetIsRememberPassword());
        aDialog.SetSavePassword(rInfo.GetIsRememberPassword());
    }

    if ( bCanUseSysCreds )
        xDialog->SetUseSystemCredentials( rInfo.GetIsUseSystemCredentials() );
        aDialog.SetUseSystemCredentials( rInfo.GetIsUseSystemCredentials() );

    rInfo.SetResult(xDialog->Execute() == RET_OK ? DialogMask::ButtonsOk :
                                                   DialogMask::ButtonsCancel);
    rInfo.SetUserName(xDialog->GetName());
    rInfo.SetPassword(xDialog->GetPassword());
    rInfo.SetAccount(xDialog->GetAccount());
    rInfo.SetIsRememberPassword(xDialog->IsSavePassword());
    rInfo.SetResult(aDialog.run() == RET_OK ? DialogMask::ButtonsOk :
                                              DialogMask::ButtonsCancel);
    rInfo.SetUserName(aDialog.GetName());
    rInfo.SetPassword(aDialog.GetPassword());
    rInfo.SetAccount(aDialog.GetAccount());
    rInfo.SetIsRememberPassword(aDialog.IsSavePassword());

    if ( bCanUseSysCreds )
      rInfo.SetIsUseSystemCredentials( xDialog->IsUseSystemCredentials() );
      rInfo.SetIsUseSystemCredentials( aDialog.IsUseSystemCredentials() );
}

void getRememberModes(
@@ -172,7 +172,7 @@ void getRememberModes(

void
handleAuthenticationRequest_(
    vcl::Window * pParent,
    weld::Window * pParent,
    uno::Reference< task::XInteractionHandler2 > const & xIH,
    uno::Reference< uno::XComponentContext > const & xContext,
    ucb::AuthenticationRequest const & rRequest,
@@ -595,11 +595,12 @@ UUIInteractionHelper::handleAuthenticationRequest(
    uno::Reference< task::XInteractionRequest > const & rRequest)
{
    uno::Any aAnyRequest(rRequest->getRequest());
    uno::Reference<awt::XWindow> xParent = getParentXWindow();

    ucb::URLAuthenticationRequest aURLAuthenticationRequest;
    if (aAnyRequest >>= aURLAuthenticationRequest)
    {
        handleAuthenticationRequest_(getParentProperty(),
        handleAuthenticationRequest_(Application::GetFrameWeld(xParent),
                                     getInteractionHandler(),
                                     m_xContext,
                                     aURLAuthenticationRequest,
@@ -611,7 +612,7 @@ UUIInteractionHelper::handleAuthenticationRequest(
    ucb::AuthenticationRequest aAuthenticationRequest;
    if (aAnyRequest >>= aAuthenticationRequest)
    {
        handleAuthenticationRequest_(getParentProperty(),
        handleAuthenticationRequest_(Application::GetFrameWeld(xParent),
                                     getInteractionHandler(),
                                     m_xContext,
                                     aAuthenticationRequest,
diff --git a/uui/source/logindlg.cxx b/uui/source/logindlg.cxx
index 3657188..3f315bc 100644
--- a/uui/source/logindlg.cxx
+++ b/uui/source/logindlg.cxx
@@ -35,29 +35,11 @@ using namespace com::sun::star;

LoginDialog::~LoginDialog()
{
    disposeOnce();
}

void LoginDialog::dispose()
{
    m_pErrorFT.clear();
    m_pErrorInfo.clear();
    m_pRequestInfo.clear();
    m_pNameFT.clear();
    m_pNameED.clear();
    m_pPasswordFT.clear();
    m_pPasswordED.clear();
    m_pAccountFT.clear();
    m_pAccountED.clear();
    m_pSavePasswdBtn.clear();
    m_pUseSysCredsCB.clear();
    m_pOKBtn.clear();
    ModalDialog::dispose();
}

void LoginDialog::SetPassword( const OUString& rNew )
{
    m_pPasswordED->SetText( rNew );
    m_xPasswordED->set_text( rNew );
    SetRequest();
}

@@ -65,138 +47,139 @@ void LoginDialog::HideControls_Impl( LoginFlags nFlags )
{
    if ( nFlags & LoginFlags::NoUsername )
    {
        m_pNameFT->Hide();
        m_pNameED->Hide();
        m_xNameFT->hide();
        m_xNameED->hide();
    }
    else if ( nFlags & LoginFlags::UsernameReadonly )
    {
        m_pNameED->Enable( false );
        m_xNameED->set_sensitive( false );
    }

    if ( nFlags & LoginFlags::NoPassword )
    {
        m_pPasswordFT->Hide();
        m_pPasswordED->Hide();
        m_xPasswordFT->hide();
        m_xPasswordED->hide();
    }

    if ( nFlags & LoginFlags::NoSavePassword )
        m_pSavePasswdBtn->Hide();
        m_xSavePasswdBtn->hide();

    if ( nFlags & LoginFlags::NoErrorText )
    {
        m_pErrorInfo->Hide();
        m_pErrorFT->Hide();
        m_xErrorInfo->hide();
        m_xErrorFT->hide();
    }

    if ( nFlags & LoginFlags::NoAccount )
    {
        m_pAccountFT->Hide();
        m_pAccountED->Hide();
        m_xAccountFT->hide();
        m_xAccountED->hide();
    }

    if ( nFlags & LoginFlags::NoUseSysCreds )
    {
        m_pUseSysCredsCB->Hide();
        m_xUseSysCredsCB->hide();
    }
}

void LoginDialog::EnableUseSysCredsControls_Impl( bool bUseSysCredsEnabled )
void LoginDialog::EnableUseSysCredsControls_Impl( bool bUseSysCredsset_sensitived )
{
    m_pErrorInfo->Enable( !bUseSysCredsEnabled );
    m_pErrorFT->Enable( !bUseSysCredsEnabled );
    m_pRequestInfo->Enable( !bUseSysCredsEnabled );
    m_pNameFT->Enable( !bUseSysCredsEnabled );
    m_pNameED->Enable( !bUseSysCredsEnabled );
    m_pPasswordFT->Enable( !bUseSysCredsEnabled );
    m_pPasswordED->Enable( !bUseSysCredsEnabled );
    m_pAccountFT->Enable( !bUseSysCredsEnabled );
    m_pAccountED->Enable( !bUseSysCredsEnabled );
    m_xErrorInfo->set_sensitive( !bUseSysCredsset_sensitived );
    m_xErrorFT->set_sensitive( !bUseSysCredsset_sensitived );
    m_xRequestInfo->set_sensitive( !bUseSysCredsset_sensitived );
    m_xNameFT->set_sensitive( !bUseSysCredsset_sensitived );
    m_xNameED->set_sensitive( !bUseSysCredsset_sensitived );
    m_xPasswordFT->set_sensitive( !bUseSysCredsset_sensitived );
    m_xPasswordED->set_sensitive( !bUseSysCredsset_sensitived );
    m_xAccountFT->set_sensitive( !bUseSysCredsset_sensitived );
    m_xAccountED->set_sensitive( !bUseSysCredsset_sensitived );
}

void LoginDialog::SetRequest()
{
    bool oldPwd = !m_pPasswordED->GetText().isEmpty();
    bool oldPwd = !m_xPasswordED->get_text().isEmpty();
    OUString aRequest;
    if (m_pAccountFT->IsVisible() && !m_realm.isEmpty())
    if (m_xAccountFT->get_visible() && !m_realm.isEmpty())
    {
        aRequest = get<FixedText>(oldPwd ? "wrongloginrealm" : "loginrealm")
            ->GetText();
        std::unique_ptr<weld::Label> xText(m_xBuilder->weld_label(oldPwd ? "wrongloginrealm" : "loginrealm"));
        aRequest = xText->get_label();
        aRequest = aRequest.replaceAll("%2", m_realm);
    }
    else
        aRequest = get<FixedText>(oldPwd ? "wrongrequestinfo" : "requestinfo")
            ->GetText();
    {
        std::unique_ptr<weld::Label> xText(m_xBuilder->weld_label(oldPwd ? "wrongrequestinfo" : "requestinfo"));
        aRequest = xText->get_label();
    }
    aRequest = aRequest.replaceAll("%1", m_server);
    m_pRequestInfo->SetText(aRequest);
    m_xRequestInfo->set_label(aRequest);
}

IMPL_LINK_NOARG(LoginDialog, OKHdl_Impl, Button*, void)
IMPL_LINK_NOARG(LoginDialog, OKHdl_Impl, weld::Button&, void)
{
    // trim the strings
    m_pNameED->SetText(comphelper::string::strip(m_pNameED->GetText(), ' '));
    m_pPasswordED->SetText(comphelper::string::strip(m_pPasswordED->GetText(), ' '));
    EndDialog( RET_OK );
    m_xNameED->set_text(comphelper::string::strip(m_xNameED->get_text(), ' '));
    m_xPasswordED->set_text(comphelper::string::strip(m_xPasswordED->get_text(), ' '));
    m_xDialog->response(RET_OK);
}

IMPL_LINK_NOARG(LoginDialog, UseSysCredsHdl_Impl, Button*, void)
IMPL_LINK_NOARG(LoginDialog, UseSysCredsHdl_Impl, weld::Button&, void)
{
    EnableUseSysCredsControls_Impl( m_pUseSysCredsCB->IsChecked() );
    EnableUseSysCredsControls_Impl( m_xUseSysCredsCB->get_active() );
}

LoginDialog::LoginDialog(vcl::Window* pParent, LoginFlags nFlags,
LoginDialog::LoginDialog(weld::Window* pParent, LoginFlags nFlags,
    const OUString& rServer, const OUString& rRealm)
    : ModalDialog(pParent, "LoginDialog", "uui/ui/logindialog.ui"),
      m_server(rServer), m_realm(rRealm)
    : GenericDialogController(pParent, "uui/ui/logindialog.ui", "LoginDialog")
    , m_xErrorFT(m_xBuilder->weld_label("errorft"))
    , m_xErrorInfo(m_xBuilder->weld_label("errorinfo"))
    , m_xRequestInfo(m_xBuilder->weld_label("requestinfo"))
    , m_xNameFT(m_xBuilder->weld_label("nameft"))
    , m_xNameED(m_xBuilder->weld_entry("nameed"))
    , m_xPasswordFT(m_xBuilder->weld_label("passwordft"))
    , m_xPasswordED(m_xBuilder->weld_entry("passworded"))
    , m_xAccountFT(m_xBuilder->weld_label("accountft"))
    , m_xAccountED(m_xBuilder->weld_entry("accounted"))
    , m_xSavePasswdBtn(m_xBuilder->weld_check_button("remember"))
    , m_xUseSysCredsCB(m_xBuilder->weld_check_button("syscreds"))
    , m_xOKBtn(m_xBuilder->weld_button("ok"))
    , m_server(rServer), m_realm(rRealm)
{
    get(m_pErrorFT, "errorft");
    get(m_pErrorInfo, "errorinfo");
    get(m_pRequestInfo, "requestinfo");
    get(m_pNameFT, "nameft");
    get(m_pNameED, "nameed");
    get(m_pPasswordFT, "passwordft");
    get(m_pPasswordED, "passworded");
    get(m_pAccountFT, "accountft");
    get(m_pAccountED, "accounted");
    get(m_pSavePasswdBtn, "remember");
    get(m_pUseSysCredsCB, "syscreds");
    get(m_pOKBtn, "ok");

    if ( !( nFlags & LoginFlags::NoUseSysCreds ) )
      EnableUseSysCredsControls_Impl( m_pUseSysCredsCB->IsChecked() );
      EnableUseSysCredsControls_Impl( m_xUseSysCredsCB->get_active() );

    SetRequest();

    m_pNameED->SetMaxTextLen( _MAX_PATH );
    m_xNameED->set_max_length( _MAX_PATH );

    m_pOKBtn->SetClickHdl( LINK( this, LoginDialog, OKHdl_Impl ) );
    m_pUseSysCredsCB->SetClickHdl( LINK( this, LoginDialog, UseSysCredsHdl_Impl ) );
    m_xOKBtn->connect_clicked( LINK( this, LoginDialog, OKHdl_Impl ) );
    m_xUseSysCredsCB->connect_clicked( LINK( this, LoginDialog, UseSysCredsHdl_Impl ) );

    HideControls_Impl( nFlags );
}

void LoginDialog::SetUseSystemCredentials( bool bUse )
{
    if ( m_pUseSysCredsCB->IsVisible() )
    if ( m_xUseSysCredsCB->get_visible() )
    {
        m_pUseSysCredsCB->Check( bUse );
        m_xUseSysCredsCB->set_active( bUse );
        EnableUseSysCredsControls_Impl( bUse );
    }
}

void LoginDialog::ClearPassword()
{
    m_pPasswordED->SetText( OUString() );
    m_xPasswordED->set_text( OUString() );

    if ( m_pNameED->GetText().isEmpty() )
        m_pNameED->GrabFocus();
    if ( m_xNameED->get_text().isEmpty() )
        m_xNameED->grab_focus();
    else
        m_pPasswordED->GrabFocus();
        m_xPasswordED->grab_focus();
}

void LoginDialog::ClearAccount()
{
    m_pAccountED->SetText( OUString() );
    m_pAccountED->GrabFocus();
    m_xAccountED->set_text( OUString() );
    m_xAccountED->grab_focus();
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/uui/source/logindlg.hxx b/uui/source/logindlg.hxx
index f222894..e96d11a 100644
--- a/uui/source/logindlg.hxx
+++ b/uui/source/logindlg.hxx
@@ -20,10 +20,7 @@
#ifndef INCLUDED_UUI_SOURCE_LOGINDLG_HXX
#define INCLUDED_UUI_SOURCE_LOGINDLG_HXX

#include <vcl/button.hxx>
#include <vcl/dialog.hxx>
#include <vcl/edit.hxx>
#include <vcl/fixed.hxx>
#include <vcl/weld.hxx>
#include <o3tl/typed_flags_set.hxx>


@@ -42,20 +39,20 @@ namespace o3tl {
}


class LoginDialog : public ModalDialog
class LoginDialog : public weld::GenericDialogController
{
    VclPtr<FixedText>      m_pErrorFT;
    VclPtr<FixedText>      m_pErrorInfo;
    VclPtr<FixedText>      m_pRequestInfo;
    VclPtr<FixedText>      m_pNameFT;
    VclPtr<Edit>           m_pNameED;
    VclPtr<FixedText>      m_pPasswordFT;
    VclPtr<Edit>           m_pPasswordED;
    VclPtr<FixedText>      m_pAccountFT;
    VclPtr<Edit>           m_pAccountED;
    VclPtr<CheckBox>       m_pSavePasswdBtn;
    VclPtr<CheckBox>       m_pUseSysCredsCB;
    VclPtr<OKButton>       m_pOKBtn;
    std::unique_ptr<weld::Label> m_xErrorFT;
    std::unique_ptr<weld::Label> m_xErrorInfo;
    std::unique_ptr<weld::Label> m_xRequestInfo;
    std::unique_ptr<weld::Label> m_xNameFT;
    std::unique_ptr<weld::Entry> m_xNameED;
    std::unique_ptr<weld::Label> m_xPasswordFT;
    std::unique_ptr<weld::Entry> m_xPasswordED;
    std::unique_ptr<weld::Label> m_xAccountFT;
    std::unique_ptr<weld::Entry> m_xAccountED;
    std::unique_ptr<weld::CheckButton> m_xSavePasswdBtn;
    std::unique_ptr<weld::CheckButton> m_xUseSysCredsCB;
    std::unique_ptr<weld::Button> m_xOKBtn;
    OUString m_server;
    OUString m_realm;

@@ -63,26 +60,25 @@ class LoginDialog : public ModalDialog
    void            EnableUseSysCredsControls_Impl( bool bUseSysCredsEnabled );
    void            SetRequest();

    DECL_LINK(OKHdl_Impl, Button*, void);
    DECL_LINK(UseSysCredsHdl_Impl, Button*, void);
    DECL_LINK(OKHdl_Impl, weld::Button&, void);
    DECL_LINK(UseSysCredsHdl_Impl, weld::Button&, void);

public:
    LoginDialog(vcl::Window* pParent, LoginFlags nFlags,
    LoginDialog(weld::Window* pParent, LoginFlags nFlags,
        const OUString& rServer, const OUString &rRealm);
    virtual ~LoginDialog() override;
    virtual void    dispose() override;

    OUString        GetName() const                             { return m_pNameED->GetText(); }
    void            SetName( const OUString& rNewName )           { m_pNameED->SetText( rNewName ); }
    OUString        GetPassword() const                         { return m_pPasswordED->GetText(); }
    OUString        GetName() const                             { return m_xNameED->get_text(); }
    void            SetName( const OUString& rNewName )           { m_xNameED->set_text( rNewName ); }
    OUString        GetPassword() const                         { return m_xPasswordED->get_text(); }
    void            SetPassword( const OUString& rNew );
    OUString        GetAccount() const                          { return m_pAccountED->GetText(); }
    bool            IsSavePassword() const                      { return m_pSavePasswdBtn->IsChecked(); }
    void            SetSavePassword( bool bSave )               { m_pSavePasswdBtn->Check( bSave ); }
    void            SetSavePasswordText( const OUString& rTxt )   { m_pSavePasswdBtn->SetText( rTxt ); }
    bool            IsUseSystemCredentials() const              { return m_pUseSysCredsCB->IsChecked(); }
    OUString        GetAccount() const                          { return m_xAccountED->get_text(); }
    bool            IsSavePassword() const                      { return m_xSavePasswdBtn->get_active(); }
    void            SetSavePassword( bool bSave )               { m_xSavePasswdBtn->set_active( bSave ); }
    void            SetSavePasswordText( const OUString& rTxt )   { m_xSavePasswdBtn->set_label( rTxt ); }
    bool            IsUseSystemCredentials() const              { return m_xUseSysCredsCB->get_active(); }
    void            SetUseSystemCredentials( bool bUse );
    void            SetErrorText( const OUString& rTxt )          { m_pErrorInfo->SetText( rTxt ); }
    void            SetErrorText( const OUString& rTxt )          { m_xErrorInfo->set_label( rTxt ); }
    void            ClearPassword();
    void            ClearAccount();
};
diff --git a/uui/uiconfig/ui/logindialog.ui b/uui/uiconfig/ui/logindialog.ui
index af56fd5..911942e 100644
--- a/uui/uiconfig/ui/logindialog.ui
+++ b/uui/uiconfig/ui/logindialog.ui
@@ -1,11 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.20.4 -->
<interface domain="uui">
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkDialog" id="LoginDialog">
    <property name="can_focus">False</property>
    <property name="border_width">6</property>
    <property name="title" translatable="yes" context="logindialog|LoginDialog">Authentication Required</property>
    <property name="modal">True</property>
    <property name="default_width">0</property>
    <property name="default_height">0</property>
    <property name="type_hint">dialog</property>
    <child internal-child="vbox">
      <object class="GtkBox" id="dialog-vbox1">
@@ -112,6 +115,7 @@
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="hexpand">True</property>
                <property name="activates_default">True</property>
              </object>
              <packing>
                <property name="left_attach">1</property>
@@ -122,10 +126,10 @@
              <object class="GtkLabel" id="accountft">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|accountft">A_ccount:</property>
                <property name="use_underline">True</property>
                <property name="mnemonic_widget">accounted</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -136,10 +140,10 @@
              <object class="GtkLabel" id="passwordft">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|passwordft">Pass_word:</property>
                <property name="use_underline">True</property>
                <property name="mnemonic_widget">passworded</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -152,6 +156,7 @@
                <property name="can_focus">True</property>
                <property name="hexpand">True</property>
                <property name="visibility">False</property>
                <property name="activates_default">True</property>
              </object>
              <packing>
                <property name="left_attach">1</property>
@@ -163,6 +168,7 @@
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="hexpand">True</property>
                <property name="activates_default">True</property>
              </object>
              <packing>
                <property name="left_attach">1</property>
@@ -173,10 +179,10 @@
              <object class="GtkLabel" id="nameft">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|nameft">_User name:</property>
                <property name="use_underline">True</property>
                <property name="mnemonic_widget">nameed</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -187,9 +193,9 @@
              <object class="GtkLabel" id="loginrealm">
                <property name="can_focus">False</property>
                <property name="no_show_all">True</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|loginrealm">Enter user name and password for:
“%2” on %1</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -201,9 +207,9 @@
              <object class="GtkLabel" id="wrongloginrealm">
                <property name="can_focus">False</property>
                <property name="no_show_all">True</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|wrongloginrealm">Wrong user name and password for:
“%2” on %1</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -215,9 +221,9 @@
              <object class="GtkLabel" id="wrongrequestinfo">
                <property name="can_focus">False</property>
                <property name="no_show_all">True</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|wrongrequestinfo">Wrong user name and password for:
%1</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -229,9 +235,9 @@
              <object class="GtkLabel" id="requestinfo">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|requestinfo">Enter user name and password for:
%1</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -243,10 +249,10 @@
              <object class="GtkLabel" id="errorft">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes" context="logindialog|errorft">Message from server:</property>
                <property name="use_underline">True</property>
                <property name="mnemonic_widget">errorinfo</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -258,9 +264,9 @@
              <object class="GtkLabel" id="errorinfo">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="wrap">True</property>
                <property name="width_chars">56</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="left_attach">0</property>
@@ -268,6 +274,12 @@
                <property name="width">2</property>
              </packing>
            </child>
            <child>
              <placeholder/>
            </child>
            <child>
              <placeholder/>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
@@ -282,5 +294,8 @@
      <action-widget response="-6">cancel</action-widget>
      <action-widget response="-11">help</action-widget>
    </action-widgets>
    <child>
      <placeholder/>
    </child>
  </object>
</interface>